<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1' />
    <meta name="renderer" content="webkit">
    <meta http-equiv="Expires" content="0">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Cache-control" content="no-cache">
    <meta http-equiv="Cache" content="no-cache">
    <title>Apipost接口文档</title>
    <link href="https://img.cdn.apipost.cn/docs/css7/style.css?20220909" rel="stylesheet">
    <link href="https://img.cdn.apipost.cn/docs/css/font-awesome-4.7.0/css/font-awesome.min.css?20220909" rel="stylesheet">
    <link href="https://img.cdn.apipost.cn/docs/css7/github.css?20220909" rel="stylesheet">
    <link rel="stylesheet" href="https://img.cdn.apipost.cn/docs/css7/content-v7.css?20220909">
    <link href="https://img.cdn.apipost.cn/docs/css7/json-viewer.css?20220909" rel="stylesheet">
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js/jquery-3.4.1.min.js?20220909"></script>
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js7/marked.min.js?20220909"></script>
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js7/template-web.js?20220909"></script>
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js7/highlight.js?20220909"></script>
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js7/clipboard.min.js?20220909"></script>
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js7/crypto-js.min.js?20220909" charset="utf-8"></script>
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js/json5.min.js?20220909"></script>
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js/dayjs.min.js?20220909"></script>
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js/url-join.js?20220909"></script>
    <!-- <script type="text/javascript" src="./js/enc.min.js"></script> -->
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js/json-viewer.min.js?20220909"></script>
    <script type="text/javascript" src="https://img.cdn.apipost.cn/docs/js/lodash.min.js?20220909"></script>
    <script type="text/javascript">
        consoleLog = console.log; // 重写 consoleLog
        $(function () {

        })
    </script>
</head>

<body>
<div class="apipost-doc-body">
    <div class="apipost-doc-body-main">
        <div class="apipost-doc-body-nav">
            <div class="logo">
                <a href="https://www.apipost.cn/"><img class="project-logo" src="https://img.cdn.apipost.cn/docs/images7/logo.svg" /></a>
            </div>
            <div class="apipost-doc-body-nav-search">
                <img src="https://img.cdn.apipost.cn/docs/images7/search-icon.svg">
                <input type="text" name="search-input" placeholder="搜索目录、接口。支持 名称、URL、Method 搜索">
            </div>
            <div class="apipost-doc-body-nav-title"> 项目名 </div>
            <div class="apipost-doc-body-nav-list">
                <ul>
                    <li data-type="global" data-parent_id="0" data-target_id="001" data-indent="0"
                        class="global active">
                        <a class="load-data-btn" href="javascript:;" data-type="global" data-parent_id="0"
                           data-target_id="001" data-indent="0">全局公共参数</a>
                    </li>
                </ul>
                <ul class="apipost-left-nav-template">
                    <script type="text/html" id="apipost-left-nav-template-tpl">
                        {{if _.isArray(list)}}
                        {{each list item}}
                        {{if !item.indent}}
                        {{set indent = item.indent = 0}}
                        {{/if}}
                        <li data-type="{{item.target_type}}" data-parent_id="{{item.parent_id}}" data-target_id="{{item.target_id}}" data-indent="{{item.indent}}" class="{{item.target_type}} {{if target_id == item.target_id}}active{{/if}} {{if item.indent != 0}}is-hidden{{/if}}" style="padding-left: {{item.indent?item.indent:0}}em;">
                            {{if item.target_type == 'folder' || item.example_type == 'folder'}}
                            <a class="load-data-btn" href="javascript:;" data-type="{{item.target_type}}" data-parent_id="{{item.parent_id}}" data-target_id="{{item.local_target_id}}" data-indent="{{item.indent}}"><i class="fa fa-caret-down"></i>{{item.name}}</a>
                            {{else if item.target_type == 'websocket' || item.example_type == 'websocket'}}
                            <a class="load-data-btn" href="javascript:;" data-type="{{item.target_type}}" data-parent_id="{{item.parent_id}}" data-target_id="{{item.local_target_id}}" data-indent="{{item.indent}}"><em class="method websocket">WS</em><span>{{item.name}}</span></a>
                            {{else if item.target_type == 'doc' || item.example_type == 'doc'}}
                            <a class="load-data-btn" href="javascript:;" data-type="{{item.target_type}}" data-parent_id="{{item.parent_id}}" data-target_id="{{item.local_target_id}}" data-indent="{{item.indent}}"><em class="method doc">文本</em><span>{{item.name}}</span></a>
                            {{else if item.target_type == 'grpc' || item.example_type == 'grpc'}}
                            <a class="load-data-btn" href="javascript:;" data-type="{{item.target_type}}" data-parent_id="{{item.parent_id}}" data-target_id="{{item.local_target_id}}" data-indent="{{item.indent}}"><em class="method grpc">GRPC</em><span>{{item.name}}</span></a>
                            {{else}}
                            <a class="load-data-btn" href="javascript:;" data-type="{{item.target_type}}" data-parent_id="{{item.parent_id}}" data-target_id="{{item.local_target_id}}" data-indent="{{item.indent}}"><em class="method {{item.method}}">{{item.method}}</em><span>{{item.name}}</span></a>
                            {{/if}}
                            {{if item.target_type != 'folder' && item.color}}
                            <span style="margin-left:5px;display:inline-block;width:6px;height:6px;border-radius:50%;background-color: {{item.color}};"></span>



                            {{/if}}
                            {{if item.target_type == 'example'}}
                            <svg style="margin-left:5px;" width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
                                <path d="M4.91033 6.68207H3.30033C3.09013 6.68207 2.94513 6.4768 3.01993 6.28529L4.61973 2.18849C4.64137 2.13306 4.67976 2.08536 4.72982 2.0517C4.77987 2.01804 4.83923 2.00001 4.90003 2H7.59962C7.81262 2 7.95782 2.21054 7.87742 2.40303L6.94592 4.63367H8.69951C8.95741 4.63367 9.09501 4.93026 8.92491 5.11933L4.62553 9.89887C4.41653 10.1313 4.02903 9.92989 4.11013 9.63106L4.91033 6.68207Z" fill="#FFC01E"/>
                            </svg>
                            {{/if}}
                        </li>
                        {{if _.isArray(item.children)}}
                        {{each item.children as childrenItem key}}
                        {{if item.children[key].indent}}
                        {{set indent = item.children[key].indent = item.children[key].indent+2}}
                        {{else}}
                        {{set indent = item.children[key].indent = item.indent + 2}}
                        {{/if}}
                        {{/each}}

                        {{set _recursiveList ={list:item.children}; }}
                        {{include 'apipost-left-nav-template-tpl' _recursiveList}}
                        {{/if}}
                        {{/each}}
                        {{/if}}
                    </script>
                </ul>
            </div>
            <div class="apipost-doc-body-nav-drag-bar"></div>
        </div>
        <div class="apipost-doc-body-content">
            <div class="apipost-doc-wrap">
                <script type="text/html" id="apipost-doc-wrap-tpl">
                    <div class="apipost-doc-wrap-title">
                        <h2 class="title" data-text="{{data.name}}" id="{{data.name}}">
                            <div class="mobile-nav-toggle-btn">
                                <a href="javascript:;" class="mobile-nav-toggle-link-btn"><i class="fa fa-reorder"></i></a>
                            </div>
                            <div class="title-text">{{data.name}}</div>
                            {{if data.target_type == 'api' || data.example_type == 'api'}}
                            <button type="button" class="copy-clipboard" data-clipboard-text="{{JSON.stringify(data.copyData)}}"><i class="fa fa-copy"></i> 复制接口 </button>
                            {{/if}}
                            {{if data.target_type == 'api' || data.target_type == 'grpc' || data.target_type == 'websocket' || data.example_type == 'api' || data.example_type == 'grpc' || data.example_type == 'websocket'}}
                            <a type="button" class="copy-clipboard" data-clipboard-text="{{JSON.stringify(data)}}" href="https://v7.apipost.cn/#/apis/run?target_id={{data.target_id}}" target="_blank">去调试</a>
                            {{/if}}
                        </h2>
                    </div>
                    <div class="apipost-doc-wrap-desc">
                        <!-- 创建人：哈利厄 最后更新：哈利厄 &nbsp;&nbsp; -->
                        创建时间：{{data.format_create_dtime}} &nbsp;&nbsp;更新时间：{{data.format_update_dtime}}
                    </div>
                    {{if _.has(data, 'request.description')}}
                    <div class="apipost-doc-wrap-para-markdown">
                        <div class="markdown-section">{{@marked(data.request.description)}}</div>
                    </div>
                    {{/if}}
                    {{if data.target_type == 'grpc' || data.example_type == 'grpc'}}
                    <h3 class="apipost-doc-wrap-para-title" data-text="基本信息" id="基本信息">
                        <i class="fa fa-wpforms"></i>
                        <span>基本信息</span>
                    </h3>
                    <ul class="apipost-doc-wrap-base-para">
                        {{if _.has(data, 'formatMark') && _.isObject(data.formatMark)}}
                        <li><span>接口状态： </span><span style="color: {{data.formatMark.color}};">{{data.formatMark.name}}</span> </li>
                        {{/if}}
                    </ul>
                    {{if _.has(data, 'protos') && _.isObject(data.protos) && Object.values(data.protos).length > 0}}
                    <h3 class="apipost-doc-wrap-para-title" data-text="方法列表" id="方法列表">
                        <i class="fa fa-wpforms"></i>
                        <span>方法列表</span>
                    </h3>
                    {{each data.protos item key}}
                    {{if _.has(item, 'services') && _.isObject(item.services) && !_.isEmpty(item.services)}}
                    <h4 class="apipost-doc-wrap-para-title" data-text="{{key}}" id="{{key}}">
                        <span>{{key}}</span>
                    </h4>
                    <div class="apipost-doc-paras" for-id="{{key}}">
                        {{each item.services service namespace}}
                        {{if _.isObject(service)}}
                        {{each service method methodName}}
                        <h5 data-text="{{namespace}}/{{methodName}}" id="{{namespace}}/{{methodName}}"><a name="{{key}}/{{namespace}}/{{methodName}}">[method]</a> {{key}}/{{namespace}}/{{methodName}}</h5>
                        <ul class="apipost-doc-wrap-base-para">
                            <li><span>方法名： </span><span><i class="copy-clipboard"  data-clipboard-text="{{methodName}}">{{methodName}}</i></span> </li>
                            <li><span>服务地址： </span><span><i class="copy-clipboard"  data-clipboard-text="{{method.url}}">{{method.url}}</i></span> </li>
                        </ul>
                        {{if _.has(method, 'request.body.raw') && method.request.body.raw != ''}}
                        <h6 data-text="请求参数" id="请求参数">请求参数</h6>
                        <div class="apipost-raw-json request-body-json-view">
                            <button type="button" class="copy-clipboard" data-clipboard-text="{{method.request.body.raw}}"><i class="fa fa-clipboard"></i>复制</button>
                            <input type="hidden" id="request-body-raw-editor-input-{{methodName}}" value='{{method.request.body.raw}}'>
                            <pre class="request-body-raw-editor-json" id="request-body-raw-editor-json-{{methodName}}"><code class="json">{{method.request.body.raw}}</code></pre>
                        </div>
                        {{if _.has(method, 'request.body.parameter') && _.isArray(method.request.body.parameter) && method.request.body.parameter.length > 0}}
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <th>是否必填</th>
                                <th>参数类型</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each method.request.body.parameter item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.value}}</pre>
                                    {{/if}}
                                </td>
                                <td>{{(item.not_null >0) ? '是' : '否'}}</td>
                                <td>{{item.field_type}}</td>
                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{/if}}
                        {{if _.has(method, 'response') && _.isObject(method.response) && !_.isEmpty(method.response)}}
                        {{each method.response response name}}
                        {{if response.raw != ''}}
                        <h6 data-text="{{name == 'success' ? '成功响应示例':'错误响应示例'}}" id="{{name == 'success' ? '成功响应示例':'错误响应示例'}}">{{name == 'success' ? '成功响应示例':'错误响应示例'}}</h6>
                        <div class="apipost-raw-json response-body-json-view">
                            <button type="button" class="copy-clipboard" data-clipboard-text="{{response.raw}}"><i class="fa fa-clipboard"></i>复制</button>
                            <input type="hidden" id="response-body-raw-editor-input-{{name}}" value='{{response.raw}}'>
                            <pre class="request-body-raw-editor-json" id="response-body-raw-editor-json-{{name}}"><code class="json">{{response.raw}}</code></pre>
                        </div>
                        {{if _.has(response, 'parameter') && _.isArray(response.parameter) && response.parameter.length > 0}}
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <th>是否必填</th>
                                <th>参数类型</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each response.parameter item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td>
                                    <pre>{{item.value}}</pre>
                                </td>
                                <td>{{(item.not_null >0) ? '是' : '否'}}</td>
                                <td>{{item.field_type}}</td>
                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{/if}}
                        {{/each}}
                        {{/if}}
                        <hr>
                        {{/each}}
                        {{/if}}
                        {{/each}}
                    </div>
                    {{/if}}
                    {{/each}}
                    {{/if}}
                    {{/if}}
                    {{if data.target_type == 'folder'}}
                    <h3 class="apipost-doc-wrap-para-title" data-text="目录参数" id="目录参数">
                        <i class="fa fa-wpforms"></i>
                        <span>目录参数</span>
                    </h3>
                    <div class="apipost-doc-paras" for-id="目录参数">
                        {{if _.has(data, 'request.header') && _.isArray(data.request.header) && data.request.header.length > 0}}
                        <h4 data-text="Header 请求参数" id="Header 请求参数">Header 请求参数</h4>
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <th>是否必填</th>
                                <th>参数类型</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.header item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.value}}</pre>
                                    {{/if}}
                                </td>
                                <td>{{(item.not_null >0) ? '是' : '否'}}</td>
                                <td>{{item.field_type}}</td>
                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{if _.has(data, 'request.query') && _.isArray(data.request.query) && data.request.query.length > 0}}
                        <h4 data-text="Query 请求参数" id="Query 请求参数">Query 请求参数</h4>
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <th>是否必填</th>
                                <th>参数类型</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.query item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.value}}</pre>
                                    {{/if}}
                                </td>
                                <td>{{(item.not_null >0) ? '是' : '否'}}</td>
                                <td>{{item.field_type}}</td>
                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{if _.has(data, 'request.body') && _.isArray(data.request.body) && data.request.body.length > 0}}
                        <h4 data-text="Body 请求参数" id="Body 请求参数">Body 请求参数</h4>
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <th>是否必填</th>
                                <th>参数类型</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.body item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.type == 'File' ? '[文件路径]':item.value}}</pre>
                                    {{/if}}
                                </td>
                                <td>{{(item.not_null >0) ? '是' : '否'}}</td>
                                <td>{{item.type == 'File' ? '[文件类型]':item.field_type}}</td>
                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{if _.has(data, 'request.authType')}}
                        <h4 data-text="认证方式" id="认证方式">认证方式</h4>
                        <ul class="apipost-doc-wrap-base-para">
                            <li>{{data.request.authType}}</li>
                        </ul>
                        {{/if}}
                    </div>
                    {{/if}}
                    {{if data.target_type == 'global'}}
                    <div class="apipost-global-tips">
                        说明：全局公共参数是针对项目而言的，所有请求的 HTTP 类型的接口都需要携带此参数。
                    </div>
                    <h3 data-text="全局公共参数" id="全局公共参数" class="apipost-doc-wrap-para-title">
                        <i class="fa fa-wpforms"></i>
                        <span>全局公共参数</span>
                    </h3>
                    <div class="apipost-doc-paras" for-id="全局公共参数">
                        {{if _.has(data, 'request.header') && _.isArray(data.request.header) && data.request.header.length > 0}}
                        <h4 data-text="Header 请求参数" id="Header 请求参数" >Header 请求参数</h4>
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>


                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.header item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.value}}</pre>
                                    {{/if}}
                                </td>


                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{if _.has(data, 'request.query') && _.isArray(data.request.query) && data.request.query.length > 0}}
                        <h4 data-text="Query 请求参数" id="Query 请求参数">Query 请求参数</h4>
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>


                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.query item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.value}}</pre>
                                    {{/if}}
                                </td>


                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{if _.has(data, 'request.body') && _.isArray(data.request.body) && data.request.body.length > 0}}
                        <h4 data-text="Body 请求参数" id="Body 请求参数">Body 请求参数</h4>
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>


                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.body item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.type == 'File' ? '[文件路径]':item.value}}</pre>
                                    {{/if}}
                                </td>


                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{if _.has(data, 'script.auth.type')}}
                        <h4 data-text="认证方式" id="认证方式">认证方式</h4>
                        <ul class="apipost-doc-wrap-base-para">
                            <li>{{data.script.auth.type}}</li>
                        </ul>
                        {{/if}}
                    </div>
                    {{/if}}
                    {{if data.target_type == 'websocket' || data.example_type == 'websocket'}}
                    <h3 data-text="基本信息" id="基本信息" class="apipost-doc-wrap-para-title">
                        <i class="fa fa-wpforms"></i>
                        <span>基本信息</span>
                    </h3>
                    <ul class="apipost-doc-wrap-base-para">
                        {{if _.has(data, 'formatMark') && _.isObject(data.formatMark)}}
                        <li><span>接口状态： </span><span style="color: {{data.formatMark.color}};">{{data.formatMark.name}}</span> </li>
                        {{/if}}
                        <li><span>接口URL： </span><span><em class="method {{data.method}}">{{data.method}}</em>
                                <i class="copy-clipboard"  data-clipboard-text="{{data.url}}">{{data.url}}</i></span> </li>
                    </ul>
                    {{/if}}
                    {{if data.target_type == 'api' || data.example_type == 'api'}}
                    <h3 data-text="基本信息" id="基本信息" class="apipost-doc-wrap-para-title">
                        <i class="fa fa-wpforms"></i>
                        <span>基本信息</span>
                    </h3>
                    <ul class="apipost-doc-wrap-base-para">
                        {{if _.has(data, 'formatMark') && _.isObject(data.formatMark)}}
                        <li><span>接口状态： </span><span style="color: {{data.formatMark.color}};">{{data.formatMark.name}}</span> </li>
                        {{/if}}
                        <li><span>接口URL： </span><span><em class="method {{data.method}}">{{data.method}}</em>
                                <i class="copy-clipboard"  data-clipboard-text="{{data.url}}">{{data.url}}</i></span> </li>
                        {{if data.mock_url != ''}}
                        <li><span>本地 Mock： </span><span><i class="copy-clipboard"  data-clipboard-text="{{urlJoin('http://127.0.0.1:10393/mock/',data.project_id, data.mock_url,'?apipost_id='+data.target_id.toString().substr(0,6))}}">{{urlJoin('http://127.0.0.1:10393/mock/',data.project_id, data.mock_url,'?apipost_id='+data.target_id.toString().substr(0,6))}}</i><br><a href="https://www.apipost.cn/download.html" target="_blank">需安装 Apipost v7 客户端</a> </span> </li>
                        {{if data.enable_server_mock > 0}}
                        <li><span>云端 Mock： </span><span><i class="copy-clipboard"  data-clipboard-text="{{urlJoin('https://console-mock.apipost.cn/mock/',data.project_id, data.mock_url,'?apipost_id='+data.target_id.toString().substr(0,6))}}">{{urlJoin('https://console-mock.apipost.cn/mock/',data.project_id, data.mock_url,'?apipost_id='+data.target_id.toString().substr(0,6))}}</i></span> </li>
                        {{/if}}
                        {{/if}}
                        {{if _.has(data, 'request.body.formatMode')}}
                        <li><span>Content-Type：</span><span><i class="copy-clipboard" data-clipboard-text="{{data.request.body.formatMode}}">{{data.request.body.formatMode}}</i></span></li>
                        {{/if}}
                        {{if _.has(data, 'request.authType')}}
                        <li><span>认证方式：</span><span><i class="copy-clipboard" data-clipboard-text="{{data.request.authType}}">{{data.request.authType}}</i></span></li>
                        {{/if}}
                    </ul>
                    <h3 data-text="请求参数" id="请求参数" class="apipost-doc-wrap-para-title">
                        <i class="fa fa-wpforms"></i>
                        <span>请求参数</span>
                    </h3>
                    <div class="apipost-doc-paras" for-id="请求参数">
                        {{if _.has(data, 'request.header.parameter') && _.isArray(data.request.header.parameter) && data.request.header.parameter.length > 0}}
                        <h4 data-text="Header 请求参数" id="Header 请求参数" >Header 请求参数</h4>
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <th>是否必填</th>
                                <th>参数类型</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.header.parameter item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.value}}</pre>
                                    {{/if}}
                                </td>
                                <td>{{(item.not_null >0) ? '是' : '否'}}</td>
                                <td>{{item.field_type}}</td>
                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{if _.has(data, 'request.query.parameter') && _.isArray(data.request.query.parameter) && data.request.query.parameter.length > 0}}
                        <h4 data-text="Query 请求参数" id="Query 请求参数" >Query 请求参数</h4>
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <th>是否必填</th>
                                <th>参数类型</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.query.parameter item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.type == 'File' ? '[文件路径]':item.value}}</pre>
                                    {{/if}}
                                </td>
                                <td>{{(item.not_null >0) ? '是' : '否'}}</td>
                                <td>{{item.field_type}}</td>
                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{if _.has(data, 'request.resful.parameter') && _.isArray(data.request.resful.parameter) && data.request.resful.parameter.length > 0}}
                        <h4 data-text="路径参数及说明" id="路径参数及说明" >路径参数及说明</h4>
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.resful.parameter item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.type == 'File' ? '[文件路径]':item.value}}</pre>
                                    {{/if}}
                                </td>
                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{if _.has(data, 'request.body.mode') && data.request.body.mode != 'none'}}
                        <h4 data-text="Body 请求参数" id="Body 请求参数" >Body 请求参数</h4>
                        {{if data.request.body.mode == 'form-data' || data.request.body.mode == 'urlencoded'}}
                        {{if _.has(data, 'request.body.parameter') && _.isArray(data.request.body.parameter) && data.request.body.parameter.length > 0}}
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <th>是否必填</th>
                                <th>参数类型</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.body.parameter item}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.type == 'File' ? '[文件路径]':item.value}}</pre>
                                    {{/if}}
                                </td>
                                <td>{{(item.not_null >0) ? '是' : '否'}}</td>
                                <td>{{item.type == 'File' ? '[文件类型]':item.field_type}}</td>
                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{else}}
                        {{if data.request.body.raw != ''}}
                        <div class="apipost-raw-json request-body-json-view">
                            <button type="button" class="copy-clipboard" data-clipboard-text="{{data.request.body.raw}}"><i class="fa fa-clipboard"></i>复制</button>
                            <input type="hidden" id="request-body-raw-editor-input" value='{{data.request.body.raw}}'>
                            <pre id="request-body-raw-editor-json"><code class="json">{{data.request.body.raw}}</code></pre>
                        </div>
                        {{if _.has(data, 'request.body.raw_para') && _.isArray(data.request.body.raw_para) && data.request.body.raw_para.length > 0}}
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <th>是否必填</th>
                                <th>参数类型</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each data.request.body.raw_para item}}
                            {{if item.key != ''}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td style="position: relative;">
                                    {{if item.value_var}}
                                    {{item.value_var}}
                                    <img src="https://img.cdn.apipost.cn/v6/docs/img/vars.svg" alt="">
                                    <div class="vars_title">
                                        变量{{item.value}} 生成
                                    </div>
                                    {{else}}
                                    <pre>{{item.value}}</pre>
                                    {{/if}}
                                </td>
                                <td>{{(item.not_null >0) ? '是' : '否'}}</td>
                                <td>{{item.field_type}}</td>
                                <td>
                                    <pre>{{item.description}}</pre>
                                </td>
                            </tr>
                            {{/if}}
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{/if}}
                        {{/if}}
                        {{/if}}
                    </div>
                    {{if _.has(data, 'response') && _.isObject(data.response) && Object.values(data.response).length > 0}}
                    <h3 data-text="响应示例" id="响应示例" class="apipost-doc-wrap-para-title">
                        <i class="fa fa-wpforms"></i>
                        <span>响应示例</span>
                    </h3>
                    <div class="apipost-doc-paras" for-id="响应示例">
                        {{each data.response item key}}
                        {{if _.has(item, 'expect.name') && item.raw != ''}}
                        <h4 data-text="{{item.expect.name}}（{{item.expect.code}}）" id="{{item.expect.name}}（{{item.expect.code}}）">{{item.expect.name}}（{{item.expect.code}}）</h4>
                        <div data-type="{{key}}" class="apipost-raw-json response-raw-json-view">
                            <button type="button" class="copy-clipboard" data-clipboard-text="{{item.raw}}"><i class="fa fa-clipboard"></i>复制</button>
                            <input type="hidden" id="response-raw-{{key}}-json-input" value='{{item.raw}}'>
                            <pre id="response-raw-{{key}}-json"><code class="json">{{item.raw}}</code></pre>
                        </div>
                        {{if _.has(item, 'parameter') && _.isArray(item.parameter) && item.parameter.length > 0}}
                        <table>
                            <thead>
                            <tr>
                                <th>参数名</th>
                                <th>参数值</th>
                                <!-- <th>是否必填</th> -->
                                <th>参数类型</th>
                                <th>描述说明</th>
                            </tr>
                            </thead>
                            <tbody>
                            {{each item.parameter item}}
                            {{if item.key != ''}}
                            <tr>
                                <td><i class="copy-clipboard"  data-clipboard-text="{{item.key}}">{{item.key}}</i></td>
                                <td>
                                    <pre>{{item.value}}</pre>
                                </td>
                                <!-- <td>{{(item.not_null >0) ? '是' : '否'}}</td> -->
                                <td>{{item.field_type}}</td>
                                <td>
                                    <pre>{{@replaceOperatorSymbol(item.description)}}</pre>
                                </td>
                            </tr>
                            {{/if}}
                            {{/each}}
                            </tbody>
                        </table>
                        {{/if}}
                        {{/if}}
                        {{/each}}
                    </div>
                    {{/if}}
                    {{/if}}
                    <footer> 本文档由 <a href="https://www.apipost.cn/" target="_blank">Apipost 接口管理工具 （https://www.apipost.cn）</a>
                        生成 </footer>
                </script>
            </div>
            <div class="apipost-float-navs">
                <h2>内容导航</h2>
                <ul class="apipost-float-nav-template">
                    <script type="text/html" id="apipost-float-nav-template-tpl">
                        {{if list.length > 0}}
                        {{each list item i}}
                        <li style="text-indent: {{item.indent*16}}px;" {{if i == 0}}class="active"{{/if}} data-id="{{item.id}}"><a href="#{{item.id}}">{{item.text}}</a></li>
                        {{/each}}
                        {{else}}
                        <li style="text-align: center;justify-content: center;">暂无导航数据</li>
                        {{/if}}
                    </script>
                </ul>
            </div>
        </div>
    </div>
</div>
<script type="text/javascript">
    // 给 arttemplate 注入新函数
    template.defaults.imports.JSON = JSON;
    template.defaults.imports.urlJoin = urlJoin;
    template.defaults.imports._ = _;
    template.defaults.imports.marked = function (md) {
        marked.setOptions({
            renderer: new marked.Renderer(),
            highlight(code) {
                return hljs.highlight('javascript', code).value;
            },
            breaks: true,
            sanitize: true,
        });
        return marked.parse(md).replace(/<pre>/g, "<pre class='hljs javascript'>");
    };
    template.defaults.imports.Object = Object;
    template.defaults.imports.keyFormat = function (params) {
        const arr = params.split('.');
        let str = '';
        for (let i = 0; i < arr.length - 1; i++) {
            str += `<span style="color:#999">${arr[i]}.</span>`;
        }
        str += arr[arr.length - 1];
        return str;
    };
    template.defaults.imports.replaceOperatorSymbol = function (originString) {
        if (!originString || originString=='') {
            return '';
        }
        const result = originString.replace(/&([^&;]+);/g, function (matchStr, b) {
            const entity = {
                quot: '"',
                lt: '<',
                gt: '>',
                apos: "'",
                amp: '&',
                ldquo: '“',
                rdquo: '”',
            };
            const r = entity[b];
            return typeof r === 'string' ? r : matchStr;
        });
        return result;
    };
    template.defaults.imports.markForName = function (key) {
        try {
            if (apipostData.project.vars.mark.filter((it) => it.key === key)[0].name) {
                return apipostData.project.vars.mark.filter((it) => it.key === key)[0].name;
            }
            return '开发中';
        } catch (error) {
            return '开发中';
        }
    };

    // 接口排序
    function sortData(data, type) {
        data.sort((a, b) => {
            // 升序
            if (type == 'ascending') {
                if (a.sort != b.sort) {
                    return a.sort - b.sort;
                }
                return a.name.localeCompare(b.name);
            }
            // 降序
            if (type == 'descending') {
                if (a.sort != b.sort) {
                    return b.sort - a.sort;
                }
                return b.name.localeCompare(a.name);
            }
        });

        // 如果有嵌套children且children里面有数据 就递归调用排序函数
        if (_.isArray(data)) {
            data.forEach((item) => {
                if (item.children && item.children.length != 0) {
                    sortData(item.children, type);
                }
            });

            return data;
        }
        return [];
    }

    // 解析 url 并返回数组
    function GetUrlQuery(uri) {
        let url = '';
        if (typeof uri === 'undefined') {
            url = window.location.search;
        } else {
            url = `?${uri.split('?')[1]}`;
        }
        const theRequest = {};
        if (url.indexOf('?') !== -1) {
            const str = url.substr(1);
            const strs = str.split('&');
            for (let i = 0; i < strs.length; i++) {
                theRequest[strs[i].split('=')[0]] = unescape(strs[i].split('=')[1]);
            }
        }
        return theRequest;
    }

    // 获取某接口的 所有父target
    function getParentTargetIDs(collection, target_id, parent_ids = []) {
        if (_.isArray(collection)) {
            const item = _.find(collection, _.matchesProperty('target_id', target_id));

            if (item) {
                parent_ids.push(item.parent_id);
                getParentTargetIDs(collection, item.parent_id, parent_ids);
            }
        }

        return parent_ids;
    }

    // 获取某接口的 所有子target
    function getChildrenTargetIDs(collection, target_id, children_ids = []) {
        if (_.isArray(collection)) {
            collection.forEach(item => {
                if (item.parent_id == target_id) {
                    children_ids.push(item.target_id);
                    getChildrenTargetIDs(collection, item.target_id, children_ids);
                }
            })
        }

        return children_ids;
    }

    // // 获取某接口的 所有子target
    // function getChildrenTargetIDs(collection, target_id, children_ids = []) {
    //     if (_.isArray(collection)) {
    //         collection.forEach(item => {
    //             if (item.target_id == target_id) {
    //                 if (item.children && _.isArray(item.children)) {
    //                     item.children.forEach((it) => {
    //                         children_ids.push(it.target_id);
    //                         if (it.children && _.isArray(it.children)) {
    //                             getChildrenTargetIDs(it.children, it.target_id, children_ids);
    //                         }
    //                     })
    //                 }
    //             }
    //         })
    //     }
    //     return children_ids;
    // }

    // 接口数据
    let apipostData = {};

    try {
        apipostData = {"data":{"id":1207431,"local_issue_id":"1de29c28594314cbac9bc6ed36f37337","local_target_id":"5fe287b1-3fdd-405a-8e65-1036833933b0","project_id":3082446,"name":"农产品溯源项目接口说明文档","url":"b5009a124d6b4f9c","salt":"d5e9888448e9b50d","password":"","env_id":"-1","create_time":1687269679,"target_id":-1,"target_type":"diy","expire_days":-1,"expire_time":-1,"attribute_list":[],"env_ids":["-1"],"portrait":"https:\/\/img.cdn.apipost.cn\/user\/980728\/3902b77424244ffa.jpg","nick_name":"李宁","app_web_url":"https:\/\/v7-api.apipost.cn","project_name":"溯源项目","publisher":"李宁","pub_name":"农产品溯源项目接口说明文档","project_logo":"","project":{"vars":{"request":{"cookie":[],"header":[{"is_checked":"1","type":"Text","key":"token","value":"eyJhbGciOiJIUzI1NiIsInR5cCI6Imp3dCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiYWNjb3VudElkIjoiMTEiLCJpYXQiOjE2ODQ0NTg5NzIsImV4cCI6MTY4NDQ4NDE3Mn0.3Ng4CvdxH-5HB8B0wHXWf9aJAyg6-CTVwRmRKHG6kMo","description":"通行令牌，通过登录模块生成，具有时效性与唯一性；"}],"query":[],"body":[]},"script":{"pre_script":"","test":"","auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"variable":[],"methods":["POST","GET","PUT","PATCH","DELETE","COPY","HEAD","OPTIONS","LINK","UNLINK","PURGE","LOCK","UNLOCK","PROPFIND","VIEW"],"mark":[{"key":"developing","name":"开发中","color":"#3A86FF","is_default":true},{"key":"complated","name":"已完成","color":"#2BA58F","is_default":true},{"key":"modifying","name":"需修改","color":"#EC4646","is_default":true}]},"code_list":[],"attribute_list":[]},"attribute_lists":[],"children":[{"local_target_id":"f812b680-d33d-4730-af14-538e84c807d8","local_parent_id":"0","name":"农产品溯源项目","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":0,"create_dtime":1686493403,"update_dtime":1687318534,"local_server_id":"","target_id":"f812b680-d33d-4730-af14-538e84c807d8","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:23","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"农产品溯源项目\n说明：\n保存与更新方法整合在一起，以所传json数据是否包含id值作为判断更新与添加的区别；\n分页查询一般包含模糊查询与多条件查询，建议使用动态sql编写；\n**管理接口基本都是针对单表进行操作，后续其他接口针对具体业务会涉及多表操作；","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"0","children":[{"local_target_id":"e5a421bd-3986-4282-96be-b6bde421df8d","local_parent_id":"f812b680-d33d-4730-af14-538e84c807d8","name":"登录模块","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":0,"create_dtime":1687107666,"update_dtime":1687107666,"local_server_id":"","target_id":"e5a421bd-3986-4282-96be-b6bde421df8d","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 01:01:06","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"f812b680-d33d-4730-af14-538e84c807d8","children":[{"local_target_id":"bf678275-64c8-46e4-9e47-99223aedf7fc","local_parent_id":"e5a421bd-3986-4282-96be-b6bde421df8d","name":"用户登录接口","method":"POST","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":1,"create_dtime":1687107666,"update_dtime":1687367706,"local_server_id":"","target_id":"bf678275-64c8-46e4-9e47-99223aedf7fc","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 01:01:06","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"be3524cb-a0be-4678-853e-8de5859c3f5a","request":{"url":"\/login","description":"1. 当用户名错误时，提示用户名不存在\n2. 当用户密码错误时,提示用户密码错误\n3. 当用户状态为锁定时，提示用户账号状态锁定，无法登录","body":{"mode":"form-data","parameter":[{"description":"用户名","field_type":"String","is_checked":1,"key":"username","value":"admin","not_null":1,"type":"Text","value_var":"","key_var":""},{"description":"密码","field_type":"String","is_checked":1,"key":"password","value":"admin","not_null":1,"type":"Text","value_var":"","key_var":""}],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/login"},"response":{"success":{"raw":"{\r\n    \"code\": 200,\r\n    \"message\": \"操作成功\",\r\n    \"data\": {\r\n        \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6Imp3dCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiYWNjb3VudElkIjoiMTEiLCJpYXQiOjE2NzU3NTE1NDgsImV4cCI6MTY3NTc3Njc0OH0.SfYHUm-CJUUAMhLbxCjy319obZfdpQScJjEAVFXrvdE\"\r\n    }\r\n}","parameter":[{"key":"code","value":"200","description":"响应状态码","not_null":1,"field_type":"Integer","type":"Text","is_checked":1},{"key":"message","value":"操作成功","description":"响应状态消息","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"data","value":"","description":"响应数据","not_null":1,"field_type":"Object","type":"Text","is_checked":1},{"key":"data.token","value":"eyJhbGciOiJIUzI1NiIsInR5cCI6Imp3dCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiYWNjb3VudElkIjoiMTEiLCJpYXQiOjE2NzU3NTE1NDgsImV4cCI6MTY3NTc3Njc0OH0.SfYHUm-CJUUAMhLbxCjy319obZfdpQScJjEAVFXrvdE","description":"","not_null":1,"field_type":"String","type":"Text","is_checked":1}],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\n\t\"code\": 2005,\n\t\"message\": \"密码错误\",\n\t\"data\": null\n}","parameter":[{"key":"code","value":"2005","description":"响应状态码","not_null":1,"field_type":"Integer","type":"Text","is_checked":1},{"key":"message","value":"密码错误","description":"响应状态消息","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"data","value":"null","description":"响应数据","not_null":1,"field_type":"Null","type":"Text","is_checked":1}],"expect":{"name":"失败","isDefault":-1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"e5a421bd-3986-4282-96be-b6bde421df8d"},{"local_target_id":"c1c15ed9-9dad-450b-b845-d27b65f0f434","local_parent_id":"e5a421bd-3986-4282-96be-b6bde421df8d","name":"退出登录接口","method":"GET","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":2,"create_dtime":1687109809,"update_dtime":1687363795,"local_server_id":"","target_id":"c1c15ed9-9dad-450b-b845-d27b65f0f434","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 01:36:49","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"c657ed27-3d8e-4e3a-ab02-d3bce9e93c40","request":{"url":"\/logout","description":"1. 因为我们在后端没有保存用户的登录状态，所以我们不提供service和dao层的业务逻辑。直接返回成功提示信息即可。","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/logout"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": null\r\n}","parameter":[{"key":"code","value":"200","description":"","not_null":1,"field_type":"Integer","type":"Text","is_checked":1},{"key":"message","value":"操作成功","description":"","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"data","value":"null","description":"","not_null":1,"field_type":"Null","type":"Text","is_checked":1}],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"e5a421bd-3986-4282-96be-b6bde421df8d"},{"local_target_id":"33461390-47c8-4f5f-901c-d9e20c9b8a75","local_parent_id":"e5a421bd-3986-4282-96be-b6bde421df8d","name":"获取当前登录用户信息接口","method":"GET","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":3,"create_dtime":1687280866,"update_dtime":1687367759,"local_server_id":"","target_id":"33461390-47c8-4f5f-901c-d9e20c9b8a75","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-21 01:07:46","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"dd362832-a774-4cf8-ab9c-4dc86241b720","request":{"url":"\/me","description":"1. 我们接收并解析请求头中包含的token字符串实现获取用户信息","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/me"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"操作成功\",\n\t\"data\": {\n\t\t\"accountId\": \"4bb4843e-409c-494d-ae15-5d317517ed85\",\n\t\t\"username\": \"admin\",\n\t\t\"realname\": \"张三\",\n\t\t\"password\": \"admin\",\n\t\t\"photo\": \"https:\/\/img2.baidu.com\/it\/u=1835117106,152654887&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1687453200&t=175f43677944a7ddf300eb6e6f566fcc\",\n\t\t\"email\": \"admin@briup.com\",\n\t\t\"mobile\": \"13734211234\",\n\t\t\"status\": 1\n\t}\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"e5a421bd-3986-4282-96be-b6bde421df8d"}]},{"local_target_id":"302a484b-4708-4cb2-834d-814bb4092889","local_parent_id":"f812b680-d33d-4730-af14-538e84c807d8","name":"日志模块","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":1,"create_dtime":1687106502,"update_dtime":1687106502,"local_server_id":"","target_id":"302a484b-4708-4cb2-834d-814bb4092889","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 00:41:42","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"f812b680-d33d-4730-af14-538e84c807d8","children":[{"local_target_id":"342b118f-7d8b-4580-8281-40155e8a6988","local_parent_id":"302a484b-4708-4cb2-834d-814bb4092889","name":"分页查询日志信息接口","method":"GET","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":1,"create_dtime":1687106522,"update_dtime":1687568502,"local_server_id":"","target_id":"342b118f-7d8b-4580-8281-40155e8a6988","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 00:42:02","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"8bff46a7-b724-4595-9b65-5b3205977bdc","request":{"url":"\/log\/page?pageNum=1&pageSize=10&originalIp=222.218.213.189","description":"1. 利用AOP实现日志信息的插入操作。该接口主要实现分页查询日志信息。","body":{"mode":"json","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"token","value":"**********"},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[{"description":"当前页码","is_checked":1,"key":"pageNum","type":"Text","not_null":1,"field_type":"Integer","value":"1","value_var":"","key_var":""},{"description":"每页大小","is_checked":1,"key":"pageSize","type":"Text","not_null":1,"field_type":"Integer","value":"10","value_var":"","key_var":""},{"description":"IP地址","is_checked":1,"key":"originalIp","type":"Text","not_null":-1,"field_type":"String","value":"222.218.213.189","value_var":"","key_var":""}]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/log\/page?pageNum=1&pageSize=10&originalIp=222.218.213.189"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": {\r\n\t\t\"total\": 10,\r\n\t\t\"list\": [\r\n\t\t\t{\r\n\t\t\t\t\"logId\": 1,\r\n\t\t\t\t\"logUsername\": \"admin\",\r\n\t\t\t\t\"logHost\": \"127.0.0.1\",\r\n\t\t\t\t\"logRealname\": \"张三\",\r\n\t\t\t\t\"logRequestMethod\": \"GET\",\r\n\t\t\t\t\"logRequestUri\": \"\/user\",\r\n\t\t\t\t\"logTime\": \"2023-10-10 18:09:12\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"logId\": 2,\r\n\t\t\t\t\"logUsername\": \"admin\",\r\n\t\t\t\t\"logHost\": \"192.168.1.1\",\r\n\t\t\t\t\"logRealname\": \"张三\",\r\n\t\t\t\t\"logRequestMethod\": \"GET\",\r\n\t\t\t\t\"logRequestUri\": \"\/me\",\r\n\t\t\t\t\"logTime\": \"2023-10-10 18:09:12\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"logId\": 3,\r\n\t\t\t\t\"logUsername\": \"admin\",\r\n\t\t\t\t\"logHost\": \"192.168.1.2\",\r\n\t\t\t\t\"logRealname\": \"张三\",\r\n\t\t\t\t\"logRequestMethod\": \"PUT\",\r\n\t\t\t\t\"logRequestUri\": \"\/user\",\r\n\t\t\t\t\"logTime\": \"2023-10-10 18:09:12\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"logId\": 4,\r\n\t\t\t\t\"logUsername\": \"admin\",\r\n\t\t\t\t\"logHost\": \"127.0.0.1\",\r\n\t\t\t\t\"logRealname\": \"张三\",\r\n\t\t\t\t\"logRequestMethod\": \"GET\",\r\n\t\t\t\t\"logRequestUri\": \"\/me\",\r\n\t\t\t\t\"logTime\": \"2023-10-10 18:09:12\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"logId\": 5,\r\n\t\t\t\t\"logUsername\": \"admin\",\r\n\t\t\t\t\"logHost\": \"192.168.1.5\",\r\n\t\t\t\t\"logRealname\": \"张三\",\r\n\t\t\t\t\"logRequestMethod\": \"POST\",\r\n\t\t\t\t\"logRequestUri\": \"\/role\",\r\n\t\t\t\t\"logTime\": 1685797889000\r\n\t\t\t}\r\n\t\t],\r\n\t\t\"pageNum\": 1,\r\n\t\t\"pageSize\": 5,\r\n\t\t\"size\": 5,\r\n\t\t\"startRow\": 1,\r\n\t\t\"endRow\": 5,\r\n\t\t\"pages\": 2,\r\n\t\t\"prePage\": 0,\r\n\t\t\"nextPage\": 2,\r\n\t\t\"isFirstPage\": true,\r\n\t\t\"isLastPage\": false,\r\n\t\t\"hasPreviousPage\": false,\r\n\t\t\"hasNextPage\": true,\r\n\t\t\"navigatePages\": 8,\r\n\t\t\"navigatepageNums\": [\r\n\t\t\t1,\r\n\t\t\t2\r\n\t\t],\r\n\t\t\"navigateFirstPage\": 1,\r\n\t\t\"navigateLastPage\": 2\r\n\t}\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n\t\"code\": 500,\r\n\t\"message\": \"程序内部错误\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"302a484b-4708-4cb2-834d-814bb4092889"}]},{"local_target_id":"64d9a507-cf47-4839-b90a-13f24994ea19","local_parent_id":"f812b680-d33d-4730-af14-538e84c807d8","name":"首页大屏","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":2,"create_dtime":1687108681,"update_dtime":1687108681,"local_server_id":"","target_id":"64d9a507-cf47-4839-b90a-13f24994ea19","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 01:18:01","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"f812b680-d33d-4730-af14-538e84c807d8","children":[{"local_target_id":"09126670-5b81-40d9-afd5-c88ec605f0f6","local_parent_id":"64d9a507-cf47-4839-b90a-13f24994ea19","name":"统计栏舍，栏圈，动物数量，冷库数量，员工数量信息接口","method":"GET","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":1,"create_dtime":1687108697,"update_dtime":1687362649,"local_server_id":"","target_id":"09126670-5b81-40d9-afd5-c88ec605f0f6","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 01:18:17","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"722df4a3-ce8c-4898-b7b9-23e77b637963","request":{"url":"\/analysis\/count","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/analysis\/count"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"成功\",\n\t\"data\": {\n\t\t\"name\": [\n\t\t\t\"栏舍\",\n\t\t\t\"栏圈\",\n\t\t\t\"动物\",\n\t\t\t\"冷库\",\n\t\t\t\"员工\"\n\t\t],\n\t\t\"value\": [\n\t\t\t3,\n\t\t\t11,\n\t\t\t38,\n\t\t\t6,\n\t\t\t16\n\t\t]\n\t}\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"64d9a507-cf47-4839-b90a-13f24994ea19"},{"local_target_id":"e3fd7dd6-fc17-4842-99a4-dca1c8a17e1d","local_parent_id":"64d9a507-cf47-4839-b90a-13f24994ea19","name":"统计动物体重信息接口","method":"GET","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":2,"create_dtime":1687109232,"update_dtime":1687362650,"local_server_id":"","target_id":"e3fd7dd6-fc17-4842-99a4-dca1c8a17e1d","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 01:27:12","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"0bda48fb-532f-4def-bdac-5af3322acde7","request":{"url":"\/analysis\/indexCount","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/analysis\/indexCount"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"成功\",\n\t\"data\": {\n\t\t\"30以下\": 8,\n\t\t\"50以上\": 2,\n\t\t\"30~50\": 28\n\t}\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"64d9a507-cf47-4839-b90a-13f24994ea19"},{"local_target_id":"fcc38b7b-05f6-48be-b0c1-a87dbc133010","local_parent_id":"64d9a507-cf47-4839-b90a-13f24994ea19","name":"统计动物病症数量接口","method":"GET","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":3,"create_dtime":1687109592,"update_dtime":1687362652,"local_server_id":"","target_id":"fcc38b7b-05f6-48be-b0c1-a87dbc133010","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 01:33:12","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"ece9bbb3-0ea1-4c0b-9241-00e6d0415e5a","request":{"url":"\/analysis\/countDisease","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/analysis\/countDisease"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"成功\",\n\t\"data\": {\n\t\t\"流行性感冒\": 9,\n\t\t\"传染性胃肠炎\": 3,\n\t\t\"维生素A缺乏症\": 2\n\t}\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"64d9a507-cf47-4839-b90a-13f24994ea19"},{"local_target_id":"0be0cdf6-ea4d-4894-910c-258266a86e88","local_parent_id":"64d9a507-cf47-4839-b90a-13f24994ea19","name":"统计本年度12个月销售动物接口","method":"GET","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":4,"create_dtime":1687109650,"update_dtime":1687362653,"local_server_id":"","target_id":"0be0cdf6-ea4d-4894-910c-258266a86e88","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 01:34:10","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"91aeed44-59f9-4bf6-ba33-9ccc5ad1972d","request":{"url":"\/analysis\/countSales","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"token","value":"**********"},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/analysis\/countSales"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"成功\",\n\t\"data\": {\n\t\t\"name\": [\n\t\t\t\"1月\",\n\t\t\t\"2月\",\t\n\t\t\t\"3月\",\n\t\t\t\"4月\",\n\t\t\t\"5月\",\n\t\t\t\"6月\",\n\t\t\t\"7月\",\n\t\t\t\"8月\",\n\t\t\t\"9月\",\n\t\t\t\"10月\",\n\t\t\t\"11月\",\n\t\t\t\"12月\"\n\t\t],\n\t\t\"value\": [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t3,\n\t\t\t0,\n\t\t\t5,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t]\n\t}\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"64d9a507-cf47-4839-b90a-13f24994ea19"}]},{"local_target_id":"e9c07e5a-29dd-4ef8-a415-64e9725a3ade","local_parent_id":"f812b680-d33d-4730-af14-538e84c807d8","name":"文件上传","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":3,"create_dtime":1687361488,"update_dtime":1687368866,"local_server_id":"","target_id":"e9c07e5a-29dd-4ef8-a415-64e9725a3ade","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-21 23:31:28","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"f812b680-d33d-4730-af14-538e84c807d8","children":[{"local_target_id":"d94cb54a-f90e-48f7-b23b-2b41bb919087","local_parent_id":"e9c07e5a-29dd-4ef8-a415-64e9725a3ade","name":"文件上传接口","method":"POST","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":1,"create_dtime":1687361521,"update_dtime":1687368100,"local_server_id":"","target_id":"d94cb54a-f90e-48f7-b23b-2b41bb919087","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-21 23:32:01","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"ffcdb685-ba1d-4ef6-897c-f065de963f3b","request":{"url":"\/file\/upload","description":"","body":{"mode":"form-data","parameter":[{"description":"文件上传参数","field_type":"String","is_checked":1,"key":"file","value":"","not_null":1,"type":"File","filename":"","value_var":"","key_var":""}],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/file\/upload"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": \"http:\/\/localhost:8082\/image\/rBBkoGSTF7iAQfC7AAC186qBzTU429.png\"\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"e9c07e5a-29dd-4ef8-a415-64e9725a3ade"}]},{"local_target_id":"9e9f913b-bbf1-4cb9-be5b-637ed08a5618","local_parent_id":"f812b680-d33d-4730-af14-538e84c807d8","name":"质检管理","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":4,"create_dtime":1686493407,"update_dtime":1687339618,"local_server_id":"","target_id":"9e9f913b-bbf1-4cb9-be5b-637ed08a5618","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:27","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"quarantineRegistration","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"f812b680-d33d-4730-af14-538e84c807d8","children":[{"local_target_id":"cc168c7f-b22e-4571-be2f-a3b7affe8a80","local_parent_id":"9e9f913b-bbf1-4cb9-be5b-637ed08a5618","name":"分页并根据条件查询检疫记录接口","method":"GET","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":0,"create_dtime":1686493405,"update_dtime":1687537227,"local_server_id":"","target_id":"cc168c7f-b22e-4571-be2f-a3b7affe8a80","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:25","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"8557e5b6-e9fa-4e71-902f-fac82c9ba57f","request":{"url":"\/quarantineRegistration\/query?bQualified=合格&grMechanism=防疫站&pageNum=1&pageSize=5","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[{"description":"检疫结果：合格或不合格","is_checked":1,"key":"bQualified","type":"Text","not_null":1,"field_type":"String","value":"合格","value_var":"","key_var":""},{"description":"检疫机构，支持模糊查询","is_checked":1,"key":"grMechanism","type":"Text","not_null":1,"field_type":"String","value":"防疫站","value_var":"","key_var":""},{"description":"当前页码","is_checked":1,"key":"pageNum","type":"Text","not_null":1,"field_type":"Integer","value":"1","value_var":"","key_var":""},{"description":"每页大小","is_checked":1,"key":"pageSize","type":"Text","not_null":1,"field_type":"Integer","value":"5","value_var":"","key_var":""}]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/quarantineRegistration\/query?bQualified=合格&grMechanism=防疫站&pageNum=1&pageSize=5"},"response":{"success":{"raw":"{\r\n  \"code\": 200,\r\n  \"message\": \"操作成功\",\r\n  \"data\": {\r\n    \"total\": 10,\r\n    \"list\": [\r\n      {\r\n        \"grId\": 10,\r\n        \"grTime\": \"2022-04-20 16:02:49\",\r\n        \"grImg\": \"http:\/\/121.224.77.1:9527\/image\/BBkoGKU602ATX3wAAIURB0YdgQ287.png\",\r\n        \"grMechanism\": \"县防疫站\",\r\n        \"grBatchId\": \"9e327e1207974747b9bb82c936a0585d\",\r\n        \"bQualified\": \"合格\"\r\n      },\r\n      {\r\n        \"grId\": 11,\r\n        \"grTime\": \"2022-05-04 18:51:37\",\r\n        \"grImg\": \"http:\/\/121.224.77.1:9527\/image\/BBkoGKU62GAB3dNAAQGQQOeTiE148.png\",\r\n        \"grMechanism\": \"县防疫站\",\r\n        \"grBatchId\": \"2dee244973ef4b4585907d2a4bad4f2a\",\r\n        \"bQualified\": \"合格\"\r\n      }\r\n    ],\r\n    \"pageNum\": 1,\r\n    \"pageSize\": 2,\r\n    \"size\": 2,\r\n    \"startRow\": 1,\r\n    \"endRow\": 2,\r\n    \"pages\": 5,\r\n    \"prePage\": 0,\r\n    \"nextPage\": 2,\r\n    \"isFirstPage\": true,\r\n    \"isLastPage\": false,\r\n    \"hasPreviousPage\": false,\r\n    \"hasNextPage\": true,\r\n    \"navigatePages\": 8,\r\n    \"navigatepageNums\": [\r\n      1,\r\n      2,\r\n      3,\r\n      4,\r\n      5\r\n    ],\r\n    \"navigateFirstPage\": 1,\r\n    \"navigateLastPage\": 5\r\n  }\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n\t\"code\": 500,\r\n\t\"message\": \"程序内部错误\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"9e9f913b-bbf1-4cb9-be5b-637ed08a5618"},{"local_target_id":"ef7de683-6924-487f-8682-4e69a71da82d","local_parent_id":"9e9f913b-bbf1-4cb9-be5b-637ed08a5618","name":"新增或更新检疫记录接口","method":"POST","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":1,"create_dtime":1686493407,"update_dtime":1687368108,"local_server_id":"","target_id":"ef7de683-6924-487f-8682-4e69a71da82d","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:27","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"71709be5-5e6b-4883-a43d-21165b89b929","request":{"url":"\/quarantineRegistration\/saveOrUpdate","description":"根据提交的参数中是否包含grId判断。如果新增不提交grId参数,通过主键自增的方式生成。如果修改必须提交id参数值。","body":{"mode":"json","parameter":[],"raw":"{\r\n  \"grBatchId\": \"f15334d5847c47cd9c0c3c2ade0846aa\",\r\n  \"grMechanism\": \"县防疫站\",\r\n  \"bQualified\": \"合格\",\r\n  \"grImg\": \"http:\/\/121.224.77.1:9527\/group1\/M00\/00\/02\/rBBkoGSTF7iAQfC7AAC186qBzTU429.png\",\r\n  \"grTime\": \"2023-06-01 00:00:00\"\r\n}","raw_para":[{"key":"grBatchId","value":"f15334d5847c47cd9c0c3c2ade0846aa","description":"批次编号","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"grMechanism","value":"县防疫站","description":"检疫机构","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"bQualified","value":"合格","description":"检疫结果 合格或不合格","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"grImg","value":"http:\/\/121.224.77.1:9527\/group1\/M00\/00\/02\/rBBkoGSTF7iAQfC7AAC186qBzTU429.png","description":"检疫登记图片路径","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"grTime","value":"2023-06-01 00:00:00","description":"检疫时间","not_null":1,"field_type":"String","type":"Text","is_checked":1}]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/quarantineRegistration\/saveOrUpdate"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"操作成功\",\n\t\"data\": null\n}","parameter":[{"key":"code","value":"200","description":"","not_null":1,"field_type":"Integer","type":"Text","is_checked":1},{"key":"message","value":"操作成功","description":"","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"data","value":"null","description":"","not_null":1,"field_type":"Null","type":"Text","is_checked":1}],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n\t\"code\": 500,\r\n\t\"message\": \"程序内部错误\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"f2ac4c25-2ca8-4e3a-a848-3383a32ce97f":{"expect":{"name":"新增或修改或删除","isDefault":-1,"code":"","contentType":"json","schema":"","mock":"","verifyType":"schema"},"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": null\r\n}","parameter":[]}},"parent_id":"9e9f913b-bbf1-4cb9-be5b-637ed08a5618"},{"local_target_id":"1b308dd0-8381-4067-8365-b4514e34ae1e","local_parent_id":"9e9f913b-bbf1-4cb9-be5b-637ed08a5618","name":"根据检疫id删除检疫记录接口","method":"DELETE","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":2,"create_dtime":1686493405,"update_dtime":1687568503,"local_server_id":"","target_id":"1b308dd0-8381-4067-8365-b4514e34ae1e","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:25","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"4f7bae63-d77f-4a57-bcc9-fda9ec9399fc","request":{"url":"\/quarantineRegistration\/deleteById\/:grId","description":"1. 删除时，提供判断逻辑，如果数据不存在，提示用户数据已删除。\n2. 该接口使用路径参数传递id值。在文档显示类型为String类型。在后端接收参数时使用Integer类型","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[{"key":"grId","description":"在文档显示类型为String类型。在后端接收参数时使用Integer类型","is_checked":1,"type":"Text","not_null":1,"field_type":"String","value":"1","value_var":"","key_var":""}]},"origin_url":"\/quarantineRegistration\/deleteById\/:grId"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"删除成功\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n\t\"code\": 500,\r\n\t\"message\": \"程序内部错误\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"9e9f913b-bbf1-4cb9-be5b-637ed08a5618"},{"local_target_id":"ac2d5963-b5b9-4b02-849f-a4d32854494a","local_parent_id":"9e9f913b-bbf1-4cb9-be5b-637ed08a5618","name":"批量删除检疫记录接口","method":"DELETE","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":3,"create_dtime":1686493406,"update_dtime":1687368116,"local_server_id":"","target_id":"ac2d5963-b5b9-4b02-849f-a4d32854494a","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:26","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"60c18e9a-7723-40f6-81b2-ed4233632a26","request":{"url":"\/quarantineRegistration\/deleteByIdAll","description":"","body":{"mode":"json","parameter":[],"raw":"[\r\n    1,2,3,4,5\r\n]","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/quarantineRegistration\/deleteByIdAll"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"批量删除成功\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n\t\"code\": 500,\r\n\t\"message\": \"程序内部错误\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"9e9f913b-bbf1-4cb9-be5b-637ed08a5618"}]},{"local_target_id":"2714340d-c4b6-4e5a-b543-31337053d875","local_parent_id":"f812b680-d33d-4730-af14-538e84c807d8","name":"栏舍管理","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":5,"create_dtime":1687110209,"update_dtime":1687110209,"local_server_id":"","target_id":"2714340d-c4b6-4e5a-b543-31337053d875","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-19 01:43:29","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"f812b680-d33d-4730-af14-538e84c807d8","children":[{"local_target_id":"631696a3-2520-4ed6-a8e1-24b6a8e2bf29","local_parent_id":"2714340d-c4b6-4e5a-b543-31337053d875","name":"分页多条件查询栏舍信息接口","method":"GET","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":0,"create_dtime":1687369130,"update_dtime":1687568545,"local_server_id":"","target_id":"631696a3-2520-4ed6-a8e1-24b6a8e2bf29","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-22 01:38:50","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"0846c532-a7e1-44df-8b9e-80c23106b1d0","request":{"url":"\/fenceHouse\/query?pageNum=1&pageSize=2&fhName=舍","description":"","body":{"mode":"none","parameter":[{"description":"","field_type":"String","is_checked":1,"key":"page","value":"","not_null":1,"type":"Text","value_var":"","key_var":""},{"description":"","field_type":"String","is_checked":1,"key":"pageSize","value":"","not_null":1,"type":"Text","value_var":"","key_var":""},{"description":"","field_type":"String","is_checked":1,"key":"hName","value":"","not_null":1,"type":"Text","value_var":"","key_var":""},{"description":"","field_type":"String","is_checked":1,"key":"hMax","value":"","not_null":1,"type":"Text","value_var":"","key_var":""},{"description":"","field_type":"String","is_checked":1,"key":"fhName","value":"","not_null":1,"type":"Text","value_var":"","key_var":""},{"description":"","field_type":"String","is_checked":1,"key":"hEnable","value":"","not_null":1,"type":"Text","value_var":"","key_var":""}],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[{"description":"当前页码","is_checked":1,"key":"pageNum","type":"Text","not_null":1,"field_type":"String","value":"1","value_var":"","key_var":""},{"description":"每页大小","is_checked":1,"key":"pageSize","type":"Text","not_null":1,"field_type":"String","value":"2","value_var":"","key_var":""},{"description":"栏舍名称，支持模糊查询","is_checked":1,"key":"fhName","type":"Text","not_null":-1,"field_type":"String","value":"舍","value_var":"","key_var":""}]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/fenceHouse\/query?pageNum=1&pageSize=2&fhName=舍"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"成功\",\n\t\"data\": {\n\t\t\"total\": 3,\n\t\t\"list\": [\n\t\t\t{\n\t\t\t\t\"fhId\": \"12e4f043910a4b7a9ad933f90fec620c\",\n\t\t\t\t\"fhName\": \"隔离舍\",\n\t\t\t\t\"fhDesc\": \"隔离病猪\",\n\t\t\t\t\"fhTime\": \"2022-04-13 00:00:00\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"fhId\": \"851d58388f974d95b6c67d93189b7222\",\n\t\t\t\t\"fhName\": \"育成舍\",\n\t\t\t\t\"fhDesc\": \"即猪舍内圈与圈间以0.8～1.0米高的实体墙相隔，沿通道正面用栅栏。其集中了实体猪栏、栅栏式猪栏两者的优点，适于大小猪场。\",\n\t\t\t\t\"fhTime\": \"2022-04-13 00:00:00\"\n\t\t\t}\n\t\t],\n\t\t\"pageNum\": 1,\n\t\t\"pageSize\": 2,\n\t\t\"size\": 2,\n\t\t\"startRow\": 1,\n\t\t\"endRow\": 2,\n\t\t\"pages\": 2,\n\t\t\"prePage\": 0,\n\t\t\"nextPage\": 2,\n\t\t\"isFirstPage\": true,\n\t\t\"isLastPage\": false,\n\t\t\"hasPreviousPage\": false,\n\t\t\"hasNextPage\": true,\n\t\t\"navigatePages\": 8,\n\t\t\"navigatepageNums\": [\n\t\t\t1,\n\t\t\t2\n\t\t],\n\t\t\"navigateFirstPage\": 1,\n\t\t\"navigateLastPage\": 2\n\t}\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n\t\"code\": 500,\r\n\t\"message\": \"程序内部错误\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"2714340d-c4b6-4e5a-b543-31337053d875"},{"local_target_id":"775de0b1-d179-4a69-bb42-2d6400ee8709","local_parent_id":"2714340d-c4b6-4e5a-b543-31337053d875","name":"根据栏舍编号查询栏舍信息以及栏圈信息接口","method":"GET","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":1,"create_dtime":1687369543,"update_dtime":1687568778,"local_server_id":"","target_id":"775de0b1-d179-4a69-bb42-2d6400ee8709","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-22 01:45:43","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"34fc03dd-9b09-46f2-84b5-7969de31ec81","request":{"url":"\/fenceHouse\/selectById?fhId=851d58388f974d95b6c67d93189b7222","description":"一个栏舍对应多个栏圈信息。dao层中使用1对多查询操作","body":{"mode":"json","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[{"description":"栏舍编号","is_checked":1,"key":"fhId","type":"Text","not_null":1,"field_type":"String","value":"851d58388f974d95b6c67d93189b7222","value_var":"","key_var":""}]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/fenceHouse\/selectById?fhId=851d58388f974d95b6c67d93189b7222"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"成功\",\r\n\t\"data\": {\r\n\t\t\"fhId\": \"851d58388f974d95b6c67d93189b7222\",\r\n\t\t\"fhName\": \"育成舍\",\r\n\t\t\"fhDesc\": \"即猪舍内圈与圈间以0.8～1.0米高的实体墙相隔，沿通道正面用栅栏。其集中了实体猪栏、栅栏式猪栏两者的优点，适于大小猪场。\",\r\n\t\t\"fhTime\": \"2022-04-13 00:00:00\",\r\n\t\t\"mhs\": [\r\n\t\t\t{\r\n\t\t\t\t\"hId\": \"21af74f933e64044bd91276d6bb2e5eb\",\r\n\t\t\t\t\"hName\": \"育成5号圈\",\r\n\t\t\t\t\"hDesc\": \"育成5号圈描述\",\r\n\t\t\t\t\"hMax\": 30,\r\n\t\t\t\t\"hSaved\": 5,\r\n\t\t\t\t\"hTime\": \"2022-04-13 06:37:29\",\r\n\t\t\t\t\"hEnable\": \"可用\",\r\n\t\t\t\t\"hFull\": \"未满\",\r\n\t\t\t\t\"hFenceId\": \"851d58388f974d95b6c67d93189b7222\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"hId\": \"6a82f8b27eab4b908f50ec6f090dcd20\",\r\n\t\t\t\t\"hName\": \"育成4号圈\",\r\n\t\t\t\t\"hDesc\": \"育成4号圈描述\",\r\n\t\t\t\t\"hMax\": 30,\r\n\t\t\t\t\"hSaved\": 0,\r\n\t\t\t\t\"hTime\": \"2022-04-13 06:37:29\",\r\n\t\t\t\t\"hEnable\": \"可用\",\r\n\t\t\t\t\"hFull\": \"未满\",\r\n\t\t\t\t\"hFenceId\": \"851d58388f974d95b6c67d93189b7222\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"hId\": \"6fc69bcd72564d5d83a0f571dbf14c1b\",\r\n\t\t\t\t\"hName\": \"育成3号圈\",\r\n\t\t\t\t\"hDesc\": \"育成3号圈描述\",\r\n\t\t\t\t\"hMax\": 30,\r\n\t\t\t\t\"hSaved\": 0,\r\n\t\t\t\t\"hTime\": \"2022-04-13 06:37:29\",\r\n\t\t\t\t\"hEnable\": \"可用\",\r\n\t\t\t\t\"hFull\": \"未满\",\r\n\t\t\t\t\"hFenceId\": \"851d58388f974d95b6c67d93189b7222\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"hId\": \"8e4766be9bc1437d920458793ecf1f6d\",\r\n\t\t\t\t\"hName\": \"育成1号圈\",\r\n\t\t\t\t\"hDesc\": \"育成1号圈描述\",\r\n\t\t\t\t\"hMax\": 30,\r\n\t\t\t\t\"hSaved\": 6,\r\n\t\t\t\t\"hTime\": \"2022-04-13 06:37:29\",\r\n\t\t\t\t\"hEnable\": \"可用\",\r\n\t\t\t\t\"hFull\": \"未满\",\r\n\t\t\t\t\"hFenceId\": \"851d58388f974d95b6c67d93189b7222\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"hId\": \"db29118f0c7442699d328a24bccf0c9b\",\r\n\t\t\t\t\"hName\": \"育成2号圈\",\r\n\t\t\t\t\"hDesc\": \"育成2号圈描述\",\r\n\t\t\t\t\"hMax\": 30,\r\n\t\t\t\t\"hSaved\": 2,\r\n\t\t\t\t\"hTime\": \"2022-04-13 06:36:09\",\r\n\t\t\t\t\"hEnable\": \"可用\",\r\n\t\t\t\t\"hFenceId\": \"851d58388f974d95b6c67d93189b7222\"\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n\t\"code\": 500,\r\n\t\"message\": \"程序内部错误\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"2714340d-c4b6-4e5a-b543-31337053d875"},{"local_target_id":"f9a5cab3-77ac-4e39-bc9d-281c686d9d0c","local_parent_id":"2714340d-c4b6-4e5a-b543-31337053d875","name":"新增或修改栏舍接口","method":"POST","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":2,"create_dtime":1686493403,"update_dtime":1687568503,"local_server_id":"","target_id":"f9a5cab3-77ac-4e39-bc9d-281c686d9d0c","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:23","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"48ff2f07-c0e6-41f1-a396-0a851876b9b0","request":{"url":"\/fenceHouse\/saveOrUpdate","description":"如果参数中包含fhId参数表示修改操作，如果是参数中没有fhId参数表示新增操作。","body":{"mode":"json","parameter":[],"raw":"{\r\n  \"fhId\": \"12e4f043910a4b7a9ad933f90fec620c\",\r\n  \"fhName\": \"隔离舍\",\r\n  \"fhDesc\": \"隔离病猪\",\r\n  \"fhTime\": \"2022-04-13 00:00:00\"\r\n}","raw_para":[{"key":"fhId","value":"12e4f043910a4b7a9ad933f90fec620c","description":"栏舍id","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"fhName","value":"隔离舍","description":"栏舍名称","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"fhDesc","value":"隔离病猪","description":"栏舍描述","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"fhTime","value":"2022-04-13 00:00:00","description":"栏舍创建时间","not_null":1,"field_type":"String","type":"Text","is_checked":1}]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/fenceHouse\/saveOrUpdate"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n\t\"code\": 500,\r\n\t\"message\": \"程序内部错误\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"2714340d-c4b6-4e5a-b543-31337053d875"},{"local_target_id":"6b0550d7-c13d-48d0-94d2-98dd85cdda64","local_parent_id":"2714340d-c4b6-4e5a-b543-31337053d875","name":"根据id删除栏舍信息接口","method":"DELETE","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":3,"create_dtime":1687369055,"update_dtime":1687579062,"local_server_id":"","target_id":"6b0550d7-c13d-48d0-94d2-98dd85cdda64","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-22 01:37:35","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"d2913941-f76c-491e-9149-3fb9b0c82b4a","request":{"url":"\/fenceHouse\/deleteById\/:hId","description":"该接口使用路径参数传递id值。在文档显示类型为String类型。在后端接收参数时使用String类型\n请求路径为【\/fenceHouse\/deleteById\/851d58388f974d95b6c67d93189b7222~~~~】","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[{"key":"hId","description":"在文档显示类型为String类型。在后端接收参数时使用String类型","is_checked":1,"type":"Text","not_null":1,"field_type":"String","value":"851d58388f974d95b6c67d93189b7222","value_var":"","key_var":""}]},"origin_url":"\/fenceHouse\/deleteById\/:hId"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n\t\"code\": 500,\r\n\t\"message\": \"程序内部错误\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"2714340d-c4b6-4e5a-b543-31337053d875"},{"local_target_id":"96e419d2-62d8-4f8d-a33d-fb976c3f88ab","local_parent_id":"2714340d-c4b6-4e5a-b543-31337053d875","name":"批量删除栏舍接口","method":"DELETE","mark":"complated","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":4,"create_dtime":1687369074,"update_dtime":1687538123,"local_server_id":"","target_id":"96e419d2-62d8-4f8d-a33d-fb976c3f88ab","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-22 01:37:54","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#2BA58F","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"9c331faf-09ff-49dd-ac89-43334ffebcc4","request":{"url":"\/fenceHouse\/deleteByIdAll","description":"","body":{"mode":"json","parameter":[],"raw":"[\r\n    1,\r\n    2,\r\n    3,\r\n    4\r\n]","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/fenceHouse\/deleteByIdAll"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\n\t\"code\": 500,\n\t\"message\": \"程序内部错误\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"2714340d-c4b6-4e5a-b543-31337053d875"}]},{"local_target_id":"f259da41-3b6b-421d-b055-59703d2c9cd5","local_parent_id":"f812b680-d33d-4730-af14-538e84c807d8","name":"动物管理","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":6,"create_dtime":1686493405,"update_dtime":1686493405,"local_server_id":"","target_id":"f259da41-3b6b-421d-b055-59703d2c9cd5","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:25","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"f812b680-d33d-4730-af14-538e84c807d8","children":[{"local_target_id":"78355b89-cad5-4d56-a53f-06735e67c2e2","local_parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5","name":"根据动物ID生成对应的二维码信息接口","method":"GET","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":0,"create_dtime":1687444396,"update_dtime":1687568499,"local_server_id":"","target_id":"78355b89-cad5-4d56-a53f-06735e67c2e2","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-22 22:33:16","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"2eedeb12-b9ce-44d7-8f5e-96e92afe719a","request":{"url":"\/animal\/QRcode?animalId=7cb446b164e7476f8f9c95f408f899f8","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[{"description":"动物编号","is_checked":1,"key":"animalId","type":"Text","not_null":1,"field_type":"String","value":"7cb446b164e7476f8f9c95f408f899f8","value_var":"","key_var":""}]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/animal\/QRcode?animalId=7cb446b164e7476f8f9c95f408f899f8"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5"},{"local_target_id":"5f8ae9c0-4aa5-4463-93e1-e9a645f5e9ec","local_parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5","name":"根据动物编号查询动物基本信息以及对应批次和栏舍栏圈信息","method":"GET","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":1,"create_dtime":1686493405,"update_dtime":1687568695,"local_server_id":"","target_id":"5f8ae9c0-4aa5-4463-93e1-e9a645f5e9ec","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:25","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"06b3952d-f9ca-4167-aeb6-6677a50616de","request":{"url":"\/animal\/findByAnimalId?animalId=24a0eb148f1a4a1cb79cb60ab12328eb","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[{"description":"动物编号","is_checked":1,"key":"animalId","type":"Text","not_null":1,"field_type":"String","value":"24a0eb148f1a4a1cb79cb60ab12328eb","value_var":"","key_var":""}]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/animal\/findByAnimalId?animalId=24a0eb148f1a4a1cb79cb60ab12328eb"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"操作成功\",\n\t\"data\": {\n\t\t\"aAnimalId\": \"24a0eb148f1a4a1cb79cb60ab12328eb\",\n\t\t\"aWeight\": \"46\",\n\t\t\"aGender\": \"雄性\",\n\t\t\"aHealthy\": \"健康\",\n\t\t\"aStatus\": \"已检疫\",\n\t\t\"aInoculate\": \"未接种\",\n\t\t\"aTime\": \"2022-06-05 22:48:10\",\n\t\t\"aBatchId\": \"1504f25bb8c4401cbce2a06dfe8a5c51\",\n\t\t\"aHurdlesId\": \"8e4766be9bc1437d920458793ecf1f6d\",\n\t\t\"managerHurdles\": \"育成1号圈\",\n\t\t\"managerFenceHouse\": \"育成舍\",\n\t\t\"managerBatch\": {\n\t\t\t\"bSerialId\": \"1504f25bb8c4401cbce2a06dfe8a5c51\",\n\t\t\t\"bDesc\": \"第三批次\",\n\t\t\t\"bQuarantine\": \"已检疫\",\n\t\t\t\"bQualified\": \"合格\",\n\t\t\t\"bTime\": \"2022-06-05 22:47:28\"\n\t\t}\n\t}\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5"},{"local_target_id":"ed75f658-7055-4280-98af-15cc84654e25","local_parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5","name":"分页并根据条件查询动物基本信息以及对应批次和栏圈信息接口","method":"GET","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":2,"create_dtime":1686493405,"update_dtime":1687748351,"local_server_id":"","target_id":"ed75f658-7055-4280-98af-15cc84654e25","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:25","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"0bc84311-2dae-4816-aae6-53e593ea5b3a","request":{"url":"\/animal\/query?pageNum=1&pageSize=2&aHealthy=健康&aGender=雌性","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[{"description":"当前页","is_checked":1,"key":"pageNum","type":"Text","not_null":1,"field_type":"Integer","value":"1","value_var":"","key_var":""},{"description":"每页大小","is_checked":1,"key":"pageSize","type":"Text","not_null":1,"field_type":"Integer","value":"2","value_var":"","key_var":""},{"description":"健康状态","is_checked":1,"key":"aHealthy","type":"Text","not_null":-1,"field_type":"String","value":"健康","value_var":"","key_var":""},{"description":"性别","is_checked":1,"key":"aGender","type":"Text","not_null":-1,"field_type":"String","value":"雌性","value_var":"","key_var":""}]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/animal\/query?pageNum=1&pageSize=2&aHealthy=健康&aGender=雌性"},"response":{"success":{"raw":"{\n  \"code\": 200,\n  \"message\": \"操作成功\",\n  \"data\": {\n    \"total\": 18,\n    \"list\": [\n      {\n        \"aAnimalId\": \"0a4c5c17a4014232924ba1d4a1a00aa3\",\n        \"aWeight\": \"18\",\n        \"aGender\": \"雌性\",\n        \"aHealthy\": \"健康\",\n        \"aStatus\": \"养殖中\",\n        \"aInoculate\": \"未接种\",\n        \"aTime\": \"2022-11-01 19:39:10\",\n        \"aBatchId\": \"977377d225ff484c8410c0f18db28ed0\",\n        \"aHurdlesId\": \"8e4766be9bc1437d920458793ecf1f6d\",\n        \"managerHurdles\": \"育成1号圈\",\n        \"managerFenceHouse\": \"育成舍\",\n        \"aBackup3\":\"http:\/\/localhost:8082\/image\/aa22df4e-bcb7-4e0f-9bd2-df2b63779fee.jpg\",\n        \"managerBatch\": {\n          \"bSerialId\": \"977377d225ff484c8410c0f18db28ed0\",\n          \"bDesc\": \"2022年11月第一批次\",\n          \"bQuarantine\": \"未检疫\",\n          \"bQualified\": null,\n          \"bTime\": \"2022-11-01 19:38:44\"\n        }\n      },\n      {\n        \"aAnimalId\": \"1335514f030e4c73931fd6422959934a\",\n        \"aWeight\": \"15\",\n        \"aGender\": \"雌性\",\n        \"aHealthy\": \"健康\",\n        \"aStatus\": \"养殖中\",\n        \"aInoculate\": \"已接种\",\n        \"aTime\": \"2022-06-14 11:04:30\",\n        \"aBatchId\": \"920d3d09c01542a987d1ab367526bc06\",\n        \"aHurdlesId\": \"db29118f0c7442699d328a24bccf0c9b\",\n        \"managerHurdles\": \"育成2号圈\",\n        \"managerFenceHouse\": \"育成舍\",\n        \"aBackup3\":\"http:\/\/localhost:8082\/image\/aa22df4e-bcb7-4e0f-9bd2-df2b63779fee.jpg\",\n        \"managerBatch\": {\n          \"bSerialId\": \"920d3d09c01542a987d1ab367526bc06\",\n          \"bDesc\": \"2022年7月第一批次\",\n          \"bQuarantine\": \"未检疫\",\n          \"bQualified\": null,\n          \"bTime\": \"2022-06-14 11:04:03\"\n        }\n      }\n    ],\n    \"pageNum\": 1,\n    \"pageSize\": 2,\n    \"size\": 2,\n    \"startRow\": 1,\n    \"endRow\": 2,\n    \"pages\": 9,\n    \"prePage\": 0,\n    \"nextPage\": 2,\n    \"isFirstPage\": true,\n    \"isLastPage\": false,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": true,\n    \"navigatePages\": 8,\n    \"navigatepageNums\": [\n      1,\n      2,\n      3,\n      4,\n      5,\n      6,\n      7,\n      8\n    ],\n    \"navigateFirstPage\": 1,\n    \"navigateLastPage\": 8\n  }\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5"},{"local_target_id":"14d46083-996d-4f2c-9c90-f1a6f9af7481","local_parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5","name":"新增或修改动物接口","method":"POST","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":3,"create_dtime":1686493403,"update_dtime":1687579823,"local_server_id":"","target_id":"14d46083-996d-4f2c-9c90-f1a6f9af7481","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:23","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"5b44df90-78b3-4bd3-820a-9fc1ecfb3793","request":{"url":"\/animal\/saveOrUpdate","description":"有ID为修改，无ID则添加\n\n添加前会根据栏圈id查看该栏圈是否已满，如果未满则添加量，如果已满则返回 插入失败,该栏圈已存满","body":{"mode":"json","parameter":[],"raw":"{\r\n    \"aAnimalId\": \"e6804d207c634105a4112eb093387a49\",\r\n    \"aWeight\": \"54\",\r\n    \"aGender\": \"雄性\",\r\n    \"aHealthy\": \"健康\",\r\n    \"aStatus\": \"养殖中\",\r\n    \"aInoculate\": \"已接种\",\r\n    \"aTime\": \"2022-06-14 11:04:30\",\r\n    \"aBatchId\": \"977377d225ff484c8410c0f18db28ed0\",\r\n    \"aHurdlesId\": \"4a1faf8f29d24766bc0be1a304615e04\"\r\n}","raw_para":[{"key":"aAnimalId","value":"e6804d207c634105a4112eb093387a49","description":"动物编号","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"aWeight","value":"54","description":"动物体重","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"aGender","value":"雄性","description":"动物性别（雌性，雄性）","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"aHealthy","value":"健康","description":"健康状态（健康，生病）","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"aStatus","value":"养殖中","description":"过程状态（养殖中，已检疫，已出栏，已屠宰，已入库，已销售）","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"aInoculate","value":"已接种","description":"疫苗接种状态（未接种，已接种）","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"aTime","value":"2022-06-14 11:04:30","description":"录入时间","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"aBatchId","value":"977377d225ff484c8410c0f18db28ed0","description":"批次外键","not_null":1,"field_type":"String","type":"Text","is_checked":1},{"key":"aHurdlesId","value":"4a1faf8f29d24766bc0be1a304615e04","description":"栏圈外键","not_null":1,"field_type":"String","type":"Text","is_checked":1}]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/animal\/saveOrUpdate"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"操作成功\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n\t\"code\": 500,\r\n\t\"message\": \"程序内部错误\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5"},{"local_target_id":"dd92a2ac-8754-4659-abeb-ebbef36fdf8b","local_parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5","name":"根据ID删除动物接口","method":"DELETE","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":4,"create_dtime":1686493404,"update_dtime":1687568502,"local_server_id":"","target_id":"dd92a2ac-8754-4659-abeb-ebbef36fdf8b","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:24","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"66d6c59e-3cb3-46c1-9177-043f82f737bc","request":{"url":"\/animal\/deleteById\/:aAnimalId","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[{"key":"aAnimalId","description":"动物编号，在文档显示类型为String类型。在后端接收参数时使用String类型","is_checked":1,"type":"Text","not_null":1,"field_type":"String","value":"7cb446b164e7476f8f9c95f408f899f8","value_var":"","key_var":""}]},"origin_url":"\/animal\/deleteById\/:aAnimalId"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"操作成功\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\n\t\"code\": 5001,\n\t\"message\": \"删除失败\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5"},{"local_target_id":"29a89ad9-9933-4330-b217-b57474ae18fe","local_parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5","name":"批量删除动物接口","method":"DELETE","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":5,"create_dtime":1686493404,"update_dtime":1687508158,"local_server_id":"","target_id":"29a89ad9-9933-4330-b217-b57474ae18fe","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:24","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"5cb720e5-6dc7-4570-987b-7a08a91a7d2d","request":{"url":"\/animal\/deleteByIdAll","description":"","body":{"mode":"json","parameter":[],"raw":"[\r\n    \"e6804d207c634105a4112eb093387a49\",\r\n    \"e4e679d0aa0f4ea8bb231ec636dc986d\",\r\n    \"e347ebe384214970b65fac9dbb6d92c9\",\r\n    \"24a0eb148f1a4a1cb79cb60ab12328eb\"\r\n]","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"bearer","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/animal\/deleteByIdAll"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"操作成功\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\n\t\"code\": 5001,\n\t\"message\": \"删除失败\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f259da41-3b6b-421d-b055-59703d2c9cd5"}]},{"local_target_id":"9849dbbb-fad7-40e2-8f6d-79d67bbec571","local_parent_id":"f812b680-d33d-4730-af14-538e84c807d8","name":"指标记录","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":7,"create_dtime":1686493403,"update_dtime":1686493403,"local_server_id":"","target_id":"9849dbbb-fad7-40e2-8f6d-79d67bbec571","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:23","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"指标记录信息内容包括：\n+ 动物编号(手动输入) \n+ 重量\n+ 是否健康（单选）\n+ 体温(38)\n+ 呼吸频率(15)\n+ 心率（70）\n+ 检测人员（传id值，[如果是管理员，从养殖人员角色里选择人员，单选。如果是养殖人员账户直接添加，不用选择，传递参数就行]())\n+ 创建时间","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"f812b680-d33d-4730-af14-538e84c807d8","children":[{"local_target_id":"c8abe2cc-9830-47eb-9596-2e3978e80eb3","local_parent_id":"9849dbbb-fad7-40e2-8f6d-79d67bbec571","name":"分页多条件查询指标记录信息","method":"GET","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":2,"create_dtime":1686493403,"update_dtime":1687568500,"local_server_id":"","target_id":"c8abe2cc-9830-47eb-9596-2e3978e80eb3","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:23","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"949892fc-9922-411e-85e3-1b27987fdbd7","request":{"url":"\/indexRecord\/query?startWeight=20&endWeight=99&pageNum=1&pageSize=5","description":"动态sql针对单表的多条件查询，注意各个对立条件的出现情况；","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[{"description":"最低体重包含该值","is_checked":1,"key":"startWeight","type":"Text","not_null":-1,"field_type":"Integer","value":"20","value_var":"","key_var":""},{"description":"最高体重包含该值","is_checked":1,"key":"endWeight","type":"Text","not_null":-1,"field_type":"Integer","value":"99","value_var":"","key_var":""},{"description":"当前页码","is_checked":1,"key":"pageNum","type":"Text","not_null":1,"field_type":"Integer","value":"1","value_var":"","key_var":""},{"description":"每页大小","is_checked":1,"key":"pageSize","type":"Text","not_null":1,"field_type":"Integer","value":"5","value_var":"","key_var":""}]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/indexRecord\/query?startWeight=20&endWeight=99&pageNum=1&pageSize=5"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"成功\",\r\n\t\"data\": {\r\n\t\t\"total\": 0,\r\n\t\t\"list\": [\r\n\t\t\t{\r\n\t\t\t\t\"irdId\": 7,\r\n\t\t\t\t\"irdWeight\": \"3.5\",\r\n\t\t\t\t\"irdTime\": \"2022-04-13 15:24:20\",\r\n\t\t\t\t\"irdHealthy\": \"健康\",\r\n\t\t\t\t\"irdTemperature\": \"36.5\",\r\n\t\t\t\t\"irdBreathing\": \"40\",\r\n\t\t\t\t\"irdHeartRate\": \"55\",\r\n\t\t\t\t\"irdAnimalId\": \"192998856dd24f1bbfd1ede2967e8075\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"irdId\": 7,\r\n\t\t\t\t\"irdWeight\": \"3.5\",\r\n\t\t\t\t\"irdTime\": \"2022-04-13 15:24:20\",\r\n\t\t\t\t\"irdHealthy\": \"健康\",\r\n\t\t\t\t\"irdTemperature\": \"36.5\",\r\n\t\t\t\t\"irdBreathing\": \"40\",\r\n\t\t\t\t\"irdHeartRate\": \"55\",\r\n\t\t\t\t\"irdAnimalId\": \"192998856dd24f1bbfd1ede2967e8075\"\r\n\t\t\t}\r\n\t\t],\r\n\t\t\"pageNum\": 1,\r\n\t\t\"pageSize\": 5,\r\n\t\t\"size\": 0,\r\n\t\t\"startRow\": 0,\r\n\t\t\"endRow\": 0,\r\n\t\t\"pages\": 0,\r\n\t\t\"prePage\": 0,\r\n\t\t\"nextPage\": 0,\r\n\t\t\"isFirstPage\": true,\r\n\t\t\"isLastPage\": true,\r\n\t\t\"hasPreviousPage\": false,\r\n\t\t\"hasNextPage\": false,\r\n\t\t\"navigatePages\": 8,\r\n\t\t\"navigatepageNums\": [],\r\n\t\t\"navigateFirstPage\": 0,\r\n\t\t\"navigateLastPage\": 0\r\n\t}\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"9849dbbb-fad7-40e2-8f6d-79d67bbec571"},{"local_target_id":"86098e72-811d-45fa-bcd7-18b4c045ff4b","local_parent_id":"9849dbbb-fad7-40e2-8f6d-79d67bbec571","name":"根据id删除指标记录","method":"DELETE","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":3,"create_dtime":1686493405,"update_dtime":1687527242,"local_server_id":"","target_id":"86098e72-811d-45fa-bcd7-18b4c045ff4b","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:25","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"6ba9f5e4-ec99-496d-85f1-35d9abf4ab7a","request":{"url":"\/indexRecord\/deleteById\/:ird_id","description":"物理删除，并且删除就后端而言，无失败的情形；因为前端获取的一定是有效数据；","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[{"key":"ird_id","description":"指标记录的id,在文档显示类型为String类型。在后端接收参数时使用Integer类型","is_checked":1,"type":"Text","not_null":1,"field_type":"String","value":"28","value_var":"","key_var":""}]},"origin_url":"\/indexRecord\/deleteById\/:ird_id"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"操作成功\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"9849dbbb-fad7-40e2-8f6d-79d67bbec571"},{"local_target_id":"425e9d1d-a508-4c66-b6ce-0cfa36c47e59","local_parent_id":"9849dbbb-fad7-40e2-8f6d-79d67bbec571","name":"批量删除指标记录","method":"DELETE","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":4,"create_dtime":1686493405,"update_dtime":1687459892,"local_server_id":"","target_id":"425e9d1d-a508-4c66-b6ce-0cfa36c47e59","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:25","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"2cfd2375-1693-494b-bee5-be75761634d3","request":{"url":"\/indexRecord\/deleteByIdAll","description":"循环调用单个删除","body":{"mode":"json","parameter":[],"raw":"[\r\n    7,8,9\r\n]","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/indexRecord\/deleteByIdAll"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"操作成功\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"9849dbbb-fad7-40e2-8f6d-79d67bbec571"},{"local_target_id":"19732fa6-f3c7-4a48-a386-654b1ca86631","local_parent_id":"9849dbbb-fad7-40e2-8f6d-79d67bbec571","name":"保存或更新指标记录","method":"POST","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":5,"create_dtime":1686493405,"update_dtime":1687568502,"local_server_id":"","target_id":"19732fa6-f3c7-4a48-a386-654b1ca86631","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:25","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"70b2721b-e053-410f-b81b-0d7c4295b8af","request":{"url":"\/indexRecord\/saveOrUpdate","description":"动态sql，service层进行参数校验，尽可能保证核心插入与更新方法正确运行；~~~~","body":{"mode":"json","parameter":[],"raw":"{\r\n  \"irdAnimalId\": \"192998856dd24f1bbfd1ede2967e8075\",\r\n  \"irdBreathing\": \"20\",\r\n  \"irdHealthy\": \"健康\",\r\n  \"irdHeartRate\": \"32\",\r\n  \"irdId\": 25,\r\n  \"irdTemperature\": \"30\",\r\n  \"irdTime\": \"2023-02-06 12:06:15\",\r\n  \"irdWeight\": \"90\"\r\n}","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/indexRecord\/saveOrUpdate"},"response":{"success":{"raw":"{\n\t\"code\": 200,\n\t\"message\": \"操作成功\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\n\t\"code\": 500,\n\t\"message\": \"系统内部错误\",\n\t\"data\": null\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"9849dbbb-fad7-40e2-8f6d-79d67bbec571"}]},{"local_target_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8","local_parent_id":"f812b680-d33d-4730-af14-538e84c807d8","name":"病症记录","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":8,"create_dtime":1686493406,"update_dtime":1686493406,"local_server_id":"","target_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:26","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"diseaseRecord\n病症记录上报添加和修改信息内容：\n+ 动物编号(手动输入)\n+ 医护人员(传id值，[如果是管理员，从医护人员角色里选择人员，单选。如果是医护人员账户直接添加，不用选择，传递参数就行]()）\n+ 病症id （额外提供不分页获取病症接口）`\n+ 上报时间\n+ 症状描述\n+ 状态：未治疗（写死，前端偷偷携带过去，修改将原状态传递就可以）","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"f812b680-d33d-4730-af14-538e84c807d8","children":[{"local_target_id":"b5da8328-8a5d-4c49-883a-279a3c8326f0","local_parent_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8","name":"查询所有病症类型信息","method":"GET","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":2,"create_dtime":1686493404,"update_dtime":1687568500,"local_server_id":"","target_id":"b5da8328-8a5d-4c49-883a-279a3c8326f0","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:24","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"08f31b18-4442-47e9-8f8f-7208ed635ec5","request":{"url":"\/diseaseRecord\/queryAllDisease","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/diseaseRecord\/queryAllDisease"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": [\r\n\t\t{\r\n\t\t\t\"dId\": 12,\r\n\t\t\t\"dName\": \"流行性感冒\",\r\n\t\t\t\"dDesc\": \"流行性感冒是由流感病毒引起的一种急性、热性、高度接触性传染病\",\r\n\t\t\t\"dType\": \"普通病症\",\r\n\t\t\t\"dEtiology\": \"流感病毒引起\",\r\n\t\t\t\"dSymptom\": \"食欲减退，呼吸急促，喷嚏咳嗽\",\r\n\t\t\t\"dPrevention\": \"保持卫生清洁干燥，定期驱虫等\",\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"dId\": 14,\r\n\t\t\t\"dName\": \"传染性胃肠炎\",\r\n\t\t\t\"dDesc\": \"传染性胃肠炎是有猪传染性胃肠炎病毒引起的急性、高度接触性传染病\",\r\n\t\t\t\"dType\": \"普通病症\",\r\n\t\t\t\"dEtiology\": \"猪传染性胃肠炎病毒\",\r\n\t\t\t\"dSymptom\": \"猪突然呕吐，接着发生剧烈的水样腹泻，粪便为黄绿色或灰色。有时是白色，并含有凝乳块，发恶臭\",\r\n\t\t\t\"dPrevention\": \"提倡自繁自育，不从疫区引进猪，如果发现病猪，立即隔离，用百分之3氢氧化钠或者百分之20石灰水消毒猪栏、场地、用具\",\r\n\t\t}\r\n\t]\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8"},{"local_target_id":"ab947df2-ccd6-418d-b606-09e3028ffb28","local_parent_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8","name":"分页多条件查询病症记录","method":"GET","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":4,"create_dtime":1686493405,"update_dtime":1687568503,"local_server_id":"","target_id":"ab947df2-ccd6-418d-b606-09e3028ffb28","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:25","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"8f46041e-ec0d-4ec0-9e21-838789d1f022","request":{"url":"\/diseaseRecord\/query?drDId=12&drStatus=已治疗&pageNum=1&pageSize=5","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[{"description":"","is_checked":1,"key":"drDId","type":"Text","not_null":-1,"field_type":"String","value":"12","value_var":"","key_var":""},{"description":"","is_checked":1,"key":"drStatus","type":"Text","not_null":-1,"field_type":"String","value":"已治疗","value_var":"","key_var":""},{"description":"当前页码","is_checked":1,"key":"pageNum","type":"Text","not_null":1,"field_type":"String","value":"1","value_var":"","key_var":""},{"description":"","is_checked":1,"key":"pageSize","type":"Text","not_null":1,"field_type":"String","value":"5","value_var":"","key_var":""}]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/diseaseRecord\/query?drDId=12&drStatus=已治疗&pageNum=1&pageSize=5"},"response":{"success":{"raw":"{\n  \"code\": 200,\n  \"message\": \"操作成功\",\n  \"data\": {\n    \"total\": 14,\n    \"list\": [\n      {\n        \"drId\": 11,\n        \"drAnimalId\": \"192998856dd24f1bbfd1ede2967e8075\",\n        \"drDesc\": \"食欲减退，呼吸急促\",\n        \"drCure\": \"已打针吃药，症状明显改善，已经完成治疗\",\n        \"drTime\": \"2022-04-13 15:49:50\",\n        \"drStatus\": \"已治疗\",\n        \"drDId\": 12,\n        \"disease\": {\n          \"dId\": 12,\n          \"dName\": \"流行性感冒\",\n          \"dDesc\": \"流行性感冒是由流感病毒引起的一种急性、热性、高度接触性传染病\",\n          \"dType\": \"普通病症\",\n          \"dEtiology\": \"流感病毒引起\",\n          \"dSymptom\": \"食欲减退，呼吸急促，喷嚏咳嗽\",\n          \"dPrevention\": \"保持卫生清洁干燥，定期驱虫等\"\n        }\n      },\n      {\n        \"drId\": 12,\n        \"drAnimalId\": \"1f0ffc9dc589403cbb6e51f5fdeaa7f3\",\n        \"drDesc\": \"流感病毒引起，食欲减退，呼吸急促\",\n        \"drCure\": \"已经打针，明显改善，已经恢复正常\",\n        \"drTime\": \"2022-04-13 15:59:42\",\n        \"drStatus\": \"已治疗\",\n        \"drDId\": 12,\n        \"disease\": {\n          \"dId\": 12,\n          \"dName\": \"流行性感冒\",\n          \"dDesc\": \"流行性感冒是由流感病毒引起的一种急性、热性、高度接触性传染病\",\n          \"dType\": \"普通病症\",\n          \"dEtiology\": \"流感病毒引起\",\n          \"dSymptom\": \"食欲减退，呼吸急促，喷嚏咳嗽\",\n          \"dPrevention\": \"保持卫生清洁干燥，定期驱虫等\"\n        }\n      }\n    ],\n    \"pageNum\": 1,\n    \"pageSize\": 2,\n    \"size\": 2,\n    \"startRow\": 1,\n    \"endRow\": 2,\n    \"pages\": 7,\n    \"prePage\": 0,\n    \"nextPage\": 2,\n    \"isFirstPage\": true,\n    \"isLastPage\": false,\n    \"hasPreviousPage\": false,\n    \"hasNextPage\": true,\n    \"navigatePages\": 8,\n    \"navigatepageNums\": [\n      1,\n      2,\n      3,\n      4,\n      5,\n      6,\n      7\n    ],\n    \"navigateFirstPage\": 1,\n    \"navigateLastPage\": 7\n  }\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8"},{"local_target_id":"d82f576f-73af-4499-970e-9ed56ed631d7","local_parent_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8","name":"根据记录ID删除病症记录接口","method":"DELETE","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":5,"create_dtime":1686493407,"update_dtime":1687527251,"local_server_id":"","target_id":"d82f576f-73af-4499-970e-9ed56ed631d7","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:27","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"c63b2637-99e7-4775-9dc3-1b03763bf2fe","request":{"url":"\/diseaseRecord\/deleteById\/:drId","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[{"key":"drId","description":"病症记录id,在文档显示类型为String类型。在后端接收参数时使用Integer类型","is_checked":1,"type":"Text","not_null":1,"field_type":"String","value":"11","value_var":"","key_var":""}]},"origin_url":"\/diseaseRecord\/deleteById\/:drId"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8"},{"local_target_id":"a8429f65-d9a6-484e-8664-5098a99c96cf","local_parent_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8","name":"批量删除病症记录接口","method":"DELETE","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":6,"create_dtime":1686493407,"update_dtime":1687459669,"local_server_id":"","target_id":"a8429f65-d9a6-484e-8664-5098a99c96cf","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:27","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"156e67a0-aa93-4ad6-a622-bb4c43dd32a4","request":{"url":"\/diseaseRecord\/deleteByIdAll","description":"","body":{"mode":"json","parameter":[],"raw":"[\r\n    22,23\r\n]","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/diseaseRecord\/deleteByIdAll"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8"},{"local_target_id":"960d33fe-529d-40ba-a306-210332cd934e","local_parent_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8","name":"新增或更新病症记录接口","method":"POST","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":7,"create_dtime":1686493407,"update_dtime":1687578682,"local_server_id":"","target_id":"960d33fe-529d-40ba-a306-210332cd934e","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-11 22:23:27","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"df3cb0d0-cad6-4be9-acf1-b7482ab6ba23","request":{"url":"\/diseaseRecord\/saveOrUpdate","description":"","body":{"mode":"json","parameter":[],"raw":"{\r\n  \"drId\":26,\r\n  \"drAnimalId\": \"192998856dd24f1bbfd1ede2967e8075\",\r\n  \"drCure\": \"已打针吃药，症状明显改善，已经完成治疗\",\r\n  \"drDId\": 12,\r\n  \"drDesc\": \"食欲减退，呼吸急促\",\r\n  \"drStatus\": \"未治疗\",\r\n  \"drTime\": \"2022-05-07 09:54:50\"\r\n}","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/diseaseRecord\/saveOrUpdate"},"response":{"success":{"raw":"{\r\n\t\"code\": 200,\r\n\t\"message\": \"操作成功\",\r\n\t\"data\": null\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"{\r\n    \"code\": 5002,\r\n    \"message\": \"动物id无效\",\r\n    \"data\": null\r\n}","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"f128603c-45a0-4e39-8e4a-44f59baba5c8"}]},{"local_target_id":"96aa23c6-9a07-48e7-8d33-1e2fe4899973","local_parent_id":"f812b680-d33d-4730-af14-538e84c807d8","name":"补充模块-下拉列表","method":"POST","mark":"developing","is_doc":0,"target_type":"folder","example_type":"0","project_id":3082446,"status":1,"sort":9,"create_dtime":1687662632,"update_dtime":1687662632,"local_server_id":"","target_id":"96aa23c6-9a07-48e7-8d33-1e2fe4899973","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-25 11:10:32","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"script":{"pre_script":"","test":"","pre_script_switch":1,"test_switch":1},"request":{"description":"","header":[],"query":[],"body":[],"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""}}},"parent_id":"f812b680-d33d-4730-af14-538e84c807d8","children":[{"local_target_id":"addec7f4-7baf-42c3-9883-777791dd0be9","local_parent_id":"96aa23c6-9a07-48e7-8d33-1e2fe4899973","name":"查询所有批次信息下拉列表接口","method":"GET","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":1,"create_dtime":1687664286,"update_dtime":1687664476,"local_server_id":"","target_id":"addec7f4-7baf-42c3-9883-777791dd0be9","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-25 11:38:06","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"5bd2a465-2419-40ff-ae64-e4be2720651b","request":{"url":"\/batch\/queryAll","description":"","body":{"mode":"json","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/batch\/queryAll"},"response":{"success":{"raw":"{\r\n  \"code\": 200,\r\n  \"message\": \"操作成功\",\r\n  \"data\": [\r\n    {\r\n      \"bSerialId\": \"1504f25bb8c4401cbce2a06dfe8a5c51\",\r\n      \"bDesc\": \"2022年6月第一批次\",\r\n      \"bQuarantine\": \"已检疫\",\r\n      \"bQualified\": \"合格\",\r\n      \"bTime\": \"2022-06-05 22:47:28\"\r\n    },\r\n    {\r\n      \"bSerialId\": \"244f840f31484313a1c3faf5b2882dc4\",\r\n      \"bDesc\": \"2022年4月第三批次\",\r\n      \"bQuarantine\": \"已检疫\",\r\n      \"bQualified\": \"合格\",\r\n      \"bTime\": \"2022-04-13 14:40:30\"\r\n    },\r\n    {\r\n      \"bSerialId\": \"43cc01922ea04cc594804d34484ea04d\",\r\n      \"bDesc\": \"2022年6月第三批次\",\r\n      \"bQuarantine\": \"已检疫\",\r\n      \"bQualified\": \"合格\",\r\n      \"bTime\": \"2022-06-15 22:46:22\"\r\n    },\r\n    {\r\n      \"bSerialId\": \"67182782d61e452184e9004f9ed3072f\",\r\n      \"bDesc\": \"2022年3月第一批次\",\r\n      \"bQuarantine\": \"未检疫\",\r\n      \"bQualified\": null,\r\n      \"bTime\": \"2022-04-13 14:39:53\"\r\n    },\r\n    {\r\n      \"bSerialId\": \"920d3d09c01542a987d1ab367526bc06\",\r\n      \"bDesc\": \"2022年7月第一批次\",\r\n      \"bQuarantine\": \"未检疫\",\r\n      \"bQualified\": null,\r\n      \"bTime\": \"2022-06-14 11:04:03\"\r\n    },\r\n    {\r\n      \"bSerialId\": \"977377d225ff484c8410c0f18db28ed0\",\r\n      \"bDesc\": \"2022年11月第一批次\",\r\n      \"bQuarantine\": \"未检疫\",\r\n      \"bQualified\": null,\r\n      \"bTime\": \"2022-11-01 19:38:44\"\r\n    },\r\n    {\r\n      \"bSerialId\": \"b4ae796ab47c432c8876facace20cf3e\",\r\n      \"bDesc\": \"2022年6月第二批\",\r\n      \"bQuarantine\": \"已检疫\",\r\n      \"bQualified\": \"合格\",\r\n      \"bTime\": \"2022-06-13 17:39:31\"\r\n    },\r\n    {\r\n      \"bSerialId\": \"f15334d5847c47cd9c0c3c2ade0846aa\",\r\n      \"bDesc\": \"2023年第一批次优良肉猪\",\r\n      \"bQuarantine\": \"未检疫\",\r\n      \"bQualified\": null,\r\n      \"bTime\": \"2023-02-03 15:45:38\"\r\n    },\r\n    {\r\n      \"bSerialId\": \"ffb95f211b874a778844857ff1e5141f\",\r\n      \"bDesc\": \"2022年5月份第二批\",\r\n      \"bQuarantine\": \"已检疫\",\r\n      \"bQualified\": \"合格\",\r\n      \"bTime\": \"2022-05-07 09:44:44\"\r\n    }\r\n  ]\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"96aa23c6-9a07-48e7-8d33-1e2fe4899973"},{"local_target_id":"14c1b088-7181-40b9-8a26-634da3bad5fd","local_parent_id":"96aa23c6-9a07-48e7-8d33-1e2fe4899973","name":"查询所有栏圈信息下拉列表接口","method":"GET","mark":"developing","is_doc":0,"target_type":"api","example_type":"0","project_id":"60577893-6cbe-47bb-9212-ddb3e2fcc452","status":1,"sort":2,"create_dtime":1687664444,"update_dtime":1687664459,"local_server_id":"","target_id":"14c1b088-7181-40b9-8a26-634da3bad5fd","modifier_id":"UDNLQ528B0C5","extend_server_id":"","create_time":"2023-06-25 11:40:44","create_users":{"create_user":"李宁","update_user":"李宁"},"color":"#3A86FF","attribute_lists":[],"enable_server_mock":-1,"mock_server_url":"","mock_url":"","new_target_id":"9385f218-5931-4f88-97b6-5b757f3911f3","request":{"url":"\/hurdles\/selectAllHurdles","description":"","body":{"mode":"none","parameter":[],"raw":"","raw_para":[]},"event":{"pre_script":"","test":""},"auth":{"type":"noauth","kv":{"key":"","value":""},"bearer":{"key":""},"basic":{"username":"","password":""},"digest":{"username":"","password":"","realm":"","nonce":"","algorithm":"","qop":"","nc":"","cnonce":"","opaque":""},"hawk":{"authId":"","authKey":"","algorithm":"","user":"","nonce":"","extraData":"","app":"","delegation":"","timestamp":"","includePayloadHash":-1},"awsv4":{"accessKey":"","secretKey":"","region":"","service":"","sessionToken":"","addAuthDataToQuery":-1},"ntlm":{"username":"","password":"","domain":"","workstation":"","disableRetryRequest":1},"edgegrid":{"accessToken":"","clientToken":"","clientSecret":"","nonce":"","timestamp":"","baseURi":"","headersToSign":""},"oauth1":{"consumerKey":"","consumerSecret":"","signatureMethod":"","addEmptyParamsToSign":-1,"includeBodyHash":-1,"addParamsToHeader":-1,"realm":"","version":"1.0","nonce":"","timestamp":"","verifier":"","callback":"","tokenSecret":"","token":""}},"header":{"parameter":[]},"query":{"parameter":[]},"cookie":{"parameter":[]},"resful":{"parameter":[]},"origin_url":"\/hurdles\/selectAllHurdles"},"response":{"success":{"raw":"{\r\n  \"code\": 200,\r\n  \"message\": \"操作成功\",\r\n  \"data\": [\r\n    {\r\n      \"hId\": \"429b226d6f7e43339841b44875c672f7\",\r\n      \"hName\": \"隔离3号圈\",\r\n      \"hDesc\": \"隔离3号圈描述\",\r\n      \"hMax\": 30,\r\n      \"hSaved\": 0,\r\n      \"hTime\": \"2022-04-13 06:37:30\",\r\n      \"hEnable\": \"可用\",\r\n      \"hFull\": \"未满\",\r\n      \"hFenceId\": \"12e4f043910a4b7a9ad933f90fec620c\"\r\n    },\r\n    {\r\n      \"hId\": \"4a1faf8f29d24766bc0be1a304615e04\",\r\n      \"hName\": \"隔离2号圈\",\r\n      \"hDesc\": \"隔离2号圈描述\",\r\n      \"hMax\": 30,\r\n      \"hSaved\": 0,\r\n      \"hTime\": \"2022-04-13 06:36:55\",\r\n      \"hEnable\": \"可用\",\r\n      \"hFull\": \"未满\",\r\n      \"hFenceId\": \"12e4f043910a4b7a9ad933f90fec620c\"\r\n    },\r\n    {\r\n      \"hId\": \"6a82f8b27eab4b908f50ec6f090dcd20\",\r\n      \"hName\": \"育成4号圈\",\r\n      \"hDesc\": \"育成4号圈描述\",\r\n      \"hMax\": 30,\r\n      \"hSaved\": 0,\r\n      \"hTime\": \"2022-04-13 06:37:04\",\r\n      \"hEnable\": \"可用\",\r\n      \"hFull\": \"未满\",\r\n      \"hFenceId\": \"851d58388f974d95b6c67d93189b7222\"\r\n    },\r\n    {\r\n      \"hId\": \"6fc69bcd72564d5d83a0f571dbf14c1b\",\r\n      \"hName\": \"育成3号圈\",\r\n      \"hDesc\": \"育成3号圈描述\",\r\n      \"hMax\": 30,\r\n      \"hSaved\": 0,\r\n      \"hTime\": \"2022-04-13 06:36:37\",\r\n      \"hEnable\": \"可用\",\r\n      \"hFull\": \"未满\",\r\n      \"hFenceId\": \"851d58388f974d95b6c67d93189b7222\"\r\n    },\r\n    {\r\n      \"hId\": \"8e4766be9bc1437d920458793ecf1f6d\",\r\n      \"hName\": \"育成1号圈\",\r\n      \"hDesc\": \"育成1号圈描述\",\r\n      \"hMax\": 30,\r\n      \"hSaved\": 6,\r\n      \"hTime\": \"2022-04-13 06:35:04\",\r\n      \"hEnable\": \"可用\",\r\n      \"hFull\": \"未满\",\r\n      \"hFenceId\": \"851d58388f974d95b6c67d93189b7222\"\r\n    },\r\n    {\r\n      \"hId\": \"94fcd94d9f544e1dbf8002d131d04256\",\r\n      \"hName\": \"保育3号圈\",\r\n      \"hDesc\": \"保育3号圈描述\",\r\n      \"hMax\": 30,\r\n      \"hSaved\": 2,\r\n      \"hTime\": \"2022-04-13 06:34:25\",\r\n      \"hEnable\": \"可用\",\r\n      \"hFull\": \"未满\",\r\n      \"hFenceId\": \"caa98b63d1e64ec981cbfaa807931518\"\r\n    },\r\n    {\r\n      \"hId\": \"d7bde20698344aedb8e1d8c1e08b35e1\",\r\n      \"hName\": \"保育1号圈\",\r\n      \"hDesc\": \"保育1号圈描述\",\r\n      \"hMax\": 30,\r\n      \"hSaved\": 9,\r\n      \"hTime\": \"2022-04-13 06:31:55\",\r\n      \"hEnable\": \"可用\",\r\n      \"hFull\": \"未满\",\r\n      \"hFenceId\": \"caa98b63d1e64ec981cbfaa807931518\"\r\n    },\r\n    {\r\n      \"hId\": \"d90594c0b0ae4dda92d779175665109f\",\r\n      \"hName\": \"隔离1号圈\",\r\n      \"hDesc\": \"隔离1号圈描述\",\r\n      \"hMax\": 30,\r\n      \"hSaved\": 0,\r\n      \"hTime\": \"2022-04-13 06:36:20\",\r\n      \"hEnable\": \"可用\",\r\n      \"hFull\": \"未满\",\r\n      \"hFenceId\": \"12e4f043910a4b7a9ad933f90fec620c\"\r\n    },\r\n    {\r\n      \"hId\": \"db29118f0c7442699d328a24bccf0c9b\",\r\n      \"hName\": \"育成2号圈\",\r\n      \"hDesc\": \"育成2号圈描述\",\r\n      \"hMax\": 30,\r\n      \"hSaved\": 2,\r\n      \"hTime\": \"2022-04-13 06:36:09\",\r\n      \"hEnable\": \"可用\",\r\n      \"hFull\": \"未满\",\r\n      \"hFenceId\": \"851d58388f974d95b6c67d93189b7222\"\r\n    },\r\n    {\r\n      \"hId\": \"e821e1725e12474c870e2342a30e0e94\",\r\n      \"hName\": \"保育2号圈\",\r\n      \"hDesc\": \"保育2号圈描述\",\r\n      \"hMax\": 30,\r\n      \"hSaved\": 1,\r\n      \"hTime\": \"2022-04-13 06:33:54\",\r\n      \"hEnable\": \"可用\",\r\n      \"hFull\": \"未满\",\r\n      \"hFenceId\": \"caa98b63d1e64ec981cbfaa807931518\"\r\n    }\r\n  ]\r\n}","parameter":[],"expect":{"name":"成功","isDefault":1,"code":200,"contentType":"json","verifyType":"schema","schema":[],"mock":""}},"error":{"raw":"","parameter":[],"expect":{"name":"失败","isDefault":-1,"code":404,"contentType":"json","verifyType":"schema","schema":[],"mock":""}}},"parent_id":"96aa23c6-9a07-48e7-8d33-1e2fe4899973"}]}]}]}};
        apipostData = apipostData.data;
        consoleLog('apipostData ---- ',apipostData);
    } catch (e) { }

    if (!_.isEmpty(apipostData)) {
        if (!_.isArray(apipostData.children)) {
            apipostData.children = [];
        }

        // 导航菜单
        apipostData.children = sortData(apipostData.children, 'ascending');

        // 数据词典（对象，键为target_id）
        const dataDB = {};
        const ruleType = (data) => {
            const d = Object.prototype.toString.call(data);
            return d.substr(8, d.length - 9);
        };

        const renderListtoObject = (List) => {
            if (ruleType(List) === 'Array') {
                List &&
                List.forEach((item) => {
                    if (item.children) {
                        renderListtoObject(item.children);
                        dataDB[item.target_id] = item;
                    } else {
                        dataDB[item.target_id] = item;
                    }
                });
            }
        };

        // 搜索
        $(document).on('input', 'input[name="search-input"]', function () {
            let keyword = _.toLower($(this).val());
            let searchResult = [];

            if (keyword == '') {
                $('.apipost-left-nav-template').find('li').removeClass('is-search-hidden search-toggle');
            } else {

                if (_.isObject(dataDB) && !_.isEmpty(dataDB)) {
                    _.forEach(dataDB, function (item) {
                        consoleLog(_.toLower(item.name), keyword, _.toLower(item.name).indexOf(keyword))
                        if (_.toLower(item.url).indexOf(keyword) > -1 || _.toLower(item.name).indexOf(keyword) > -1 || _.toLower(item.method).indexOf(keyword) > -1) {
                            searchResult.push(item.target_id);
                        }
                    });

                    if (searchResult.length == 0) {
                        $('.apipost-left-nav-template').find('li').addClass('is-search-hidden');
                    } else {
                        searchResult.forEach(target_id => {
                            searchResult = _.concat(searchResult, getParentTargetIDs(Object.values(dataDB), target_id));
                        })
                    }

                    // 隐藏其他
                    _.difference(Object.keys(dataDB), searchResult).forEach(hidden_target_id => {
                        $(`.apipost-left-nav-template li[data-target_id="${hidden_target_id}"]`).addClass('is-search-hidden');
                        $(`.apipost-left-nav-template li[data-target_id="${hidden_target_id}"][data-type="folder"]`).addClass('search-toggle');
                    })

                    // 展示结果
                    searchResult.forEach(show_target_id => {
                        $(`.apipost-left-nav-template li[data-target_id="${show_target_id}"]`).removeClass('is-search-hidden is-hidden search-toggle');
                        $(`.apipost-left-nav-template li[data-target_id="${show_target_id}"][data-type="folder"]`).removeClass('search-toggle');
                    })
                }
            }
        })

        renderListtoObject(apipostData.children);

        // 获取当前的target_id
        let _target_id = '001';
        const _urlParas = GetUrlQuery();

        if (_.isObject(_urlParas) && _.isString(_urlParas.target_id)) {
            _target_id = _urlParas.target_id;
        }

        // 修改地址栏
        function changeURLStatic(name, value) {
            const url = changeURLParam(location.href, name, value); // 修改 URL 参数
            history.replaceState(null, null, url); // 替换地址栏
        }

        function changeURLParam(url, name, value) {
            const reg = eval(`/([?|&]${name}=)[^&]*/gi`);
            value = value.toString().replace(/(^\s*)|(\s*$)/g, ''); // 移除首尾空格
            let url2;
            if (!value) {
                // remove
                url2 = url.replace(reg, '');
            } else if (url.match(reg)) {
                // edit
                url2 = url.replace(reg, `$1${value}`);
            } else {
                // add
                url2 = `${url + (url.indexOf('?') > -1 ? '&' : '?') + name}=${value}`;
            }
            return url2;
        }

        // 格式化内容
        function formatJson(json) {
            // consoleLog(json, apipostData);

            // name
            if (json.target_type == 'global') {
                _.set(json, 'name', '全局公共参数');
            }

            // mark
            if (_.has(apipostData, 'project.vars.mark') && _.isArray(apipostData.project.vars.mark)) {
                const _markedObj = {};
                apipostData.project.vars.mark.forEach((item) => {
                    _markedObj[item.key] = item;
                });

                if (_.isObject(_markedObj[json.mark])) {
                    _.set(json, 'formatMark', _markedObj[json.mark]);
                }
            }

            // time
            if (_.isNumber(json.create_dtime)) {
                if (String(json.create_dtime).length == 10) {
                    _.set(
                        json,
                        'format_create_dtime',
                        dayjs.unix(json.create_dtime).format('YYYY-MM-DD HH:mm:ss')
                    );
                }

                if (String(json.create_dtime).length == 13) {
                    _.set(json, 'format_create_dtime', dayjs(json.create_dtime).format('YYYY-MM-DD HH:mm:ss'));
                }
            } else {
                if (_.isString(json.create_dtime)) {
                    _.set(json, 'format_create_dtime', json.create_dtime);
                } else {
                    _.set(json, 'format_create_dtime', dayjs().format('YYYY-MM-DD HH:mm:ss'));
                }
            }

            if (_.isNumber(json.update_dtime)) {
                if (String(json.update_dtime).length == 10) {
                    _.set(
                        json,
                        'format_update_dtime',
                        dayjs.unix(json.update_dtime).format('YYYY-MM-DD HH:mm:ss')
                    );
                }

                if (String(json.update_dtime).length == 13) {
                    _.set(json, 'format_update_dtime', dayjs(json.update_dtime).format('YYYY-MM-DD HH:mm:ss'));
                }
            } else {
                if (_.isString(json.update_dtime)) {
                    _.set(json, 'format_update_dtime', json.update_dtime);
                } else {
                    _.set(json, 'format_update_dtime', dayjs().format('YYYY-MM-DD HH:mm:ss'));
                }
            }

            // formatMode
            if (_.has(json, 'request.body.mode')) {
                switch (json.request.body.mode) {
                    case 'none':
                        break;
                    case 'form-data':
                        _.set(json, 'request.body.formatMode', 'multipart/form-data');
                        break;
                    case 'urlencoded':
                        _.set(json, 'request.body.formatMode', 'application/x-www-form-urlencoded');
                        break;
                    case 'json':
                        _.set(json, 'request.body.formatMode', 'application/json');
                        break;
                    case 'xml':
                        _.set(json, 'request.body.formatMode', 'application/xml');
                        break;
                    case 'javascript':
                        _.set(json, 'request.body.formatMode', 'application/javascript');
                        break;
                    case 'plain':
                        _.set(json, 'request.body.formatMode', 'text/plain');
                        break;
                    case 'html':
                        _.set(json, 'request.body.formatMode', 'text/html');
                        break;
                }
            }

            if(_.has(json, 'request.auth.type')) {
                switch (json.request.auth.type) {
                    case 'noauth':
                        _.set(json, 'request.authType', '无需认证');
                        break;
                    case 'awsv4':
                        _.set(json, 'request.authType', 'AWS Signature');
                        break;
                    case 'basic':
                        _.set(json, 'request.authType', 'Basic auth');
                        break;
                    case 'bearer':
                        _.set(json, 'request.authType', 'Bearer auth');
                        break;
                    case 'digest':
                        _.set(json, 'request.authType', 'Digest auth');
                        break;
                    case 'edgegrid':
                        _.set(json, 'request.authType', 'Akamai EdgeGrid');
                        break;
                    case 'hawk':
                        _.set(json, 'request.authType', 'Hawk authentication');
                        break;
                    case 'kv':
                        _.set(json, 'request.authType', '私密键值对');
                        break;
                    case 'ntlm':
                        _.set(json, 'request.authType', 'NTLM Authentication');
                        break;
                    case 'oauth1':
                        _.set(json, 'request.authType', 'OAuth 1.0');
                        break;
                }
            }

            json.url = json.request.url;
            return json;
        }

        // 加载当前数据
        function loadData(_target_id,dataDB) {

            // 获取当前的数据信息
            let _targetData = {};

            // 右侧浮动导航
            let floatNavs = [];

            if(_target_id == '001'){
                if (_.isObject(dataDB[_target_id])) {
                    _targetData = _.cloneDeep(dataDB[_target_id]);
                } else if (
                    _.has(apipostData, 'project.vars.request') &&
                    _.isObject(apipostData.project.vars.request)
                ) {
                    _targetData = {
                        target_type: 'global',
                        request: apipostData.project.vars.request,
                        script: apipostData.project.vars.script,
                    };
                } else {
                    _targetData = {
                        target_type: 'none',
                        request: {},
                    };
                }

                _targetData = formatJson(_targetData);

                $('.apipost-doc-body-nav-list').find('li').removeClass('active');
                $('.apipost-doc-body-nav-list')
                    .find(`li[data-target_id="${_target_id}"]`)
                    .eq(0)
                    .addClass('active')
                    .toggleClass('toggle search-toggle');

                // const children_ids = getChildrenTargetIDs(Object.values(dataDB), _target_id);
                //
                // if (_.isArray(children_ids)) {
                //     if (
                //         $('.apipost-doc-body-nav-list')
                //             .find(`li[data-target_id="${_target_id}"]`)
                //             .eq(0)
                //             .hasClass('toggle')
                //     ) {
                //         children_ids.forEach((target_id) => {
                //             if ($(`li[data-target_id="${target_id}"]`).attr('data-type') == 'folder') {
                //                 $(`li[data-target_id="${target_id}"]`).addClass('is-hidden toggle');
                //             } else {
                //                 $(`li[data-target_id="${target_id}"]`).addClass('is-hidden');
                //             }
                //         });
                //     } else {
                //         children_ids.forEach((target_id) => {
                //             if ($(`li[data-target_id="${target_id}"]`).attr('data-type') == 'folder') {
                //                 $(`li[data-target_id="${target_id}"]`).removeClass('is-hidden toggle');
                //             } else {
                //                 $(`li[data-target_id="${target_id}"]`).removeClass('is-hidden');
                //             }
                //         });
                //     }
                // }

                _targetData.copyData = JSON.parse(JSON.stringify(_targetData));
                if(_targetData.copyData.target_type == 'example'){
                    _targetData.copyData.target_type = _targetData.copyData.example_type;
                }

                // 加载左侧内容
                const _docContentHtml = template('apipost-doc-wrap-tpl', {
                    data: _targetData,
                    target_id: _target_id,
                });

                $('.apipost-doc-wrap').html(_docContentHtml);

                // 右侧浮动导航
                floatNavs = [];
                $('.apipost-doc-wrap').find('h3 ,h4, h5, h6, h7').each((i, item) => {
                    let text = $(item).attr('data-text');
                    let id = $(item).attr('id');
                    if (text) {
                        floatNavs.push({
                            text, id,
                            name: $(item).prop("tagName"),
                            indent: $(item).prop("tagName").replace(/[^0-9]/ig, "") - 2,
                        })
                    }
                })

                const _floatNavs = template('apipost-float-nav-template-tpl', {
                    list: floatNavs
                });

                $('.apipost-float-nav-template').html(_floatNavs);

                // 请求body raw 参数
                try {
                    if (_targetData.target_type == 'grpc' || _targetData.example_type == 'grpc') {
                        $('.request-body-raw-editor-json').each((i, item) => {
                            let val = $(item).prev('input').val();

                            if(val){
                                new JsonEditor(
                                    `#${$(item).attr('id')}`,
                                    JSON5.parse(val),
                                    {},
                                    []
                                ).load(JSON5.parse(val), []);
                            }
                        })
                    }

                    if (_targetData.target_type == 'api' || _targetData.example_type == 'api') {
                        let obj = [];
                        if (_.has(_targetData, 'request.body.raw_para')) {
                            obj = _targetData.request.body.raw_para.map((itemRaw) => {
                                const arr = itemRaw.key.split('.');
                                itemRaw.newKey = arr[arr.length - 1];
                                return itemRaw;
                            });
                        }

                        if($('#request-body-raw-editor-input').length > 0){
                            new JsonEditor('#request-body-raw-editor-json',
                                JSON5.parse($('#request-body-raw-editor-input').val()),
                                {},
                                obj
                            ).load(JSON5.parse($('#request-body-raw-editor-input').val()), obj);
                        }
                    }
                } catch (e) { }

                // 响应示例 raw 参数
                try {
                    _.forEach(_targetData.response, function (item, key) {
                        const obj = item.parameter.map((itemRaw) => {
                            const arr = itemRaw.key.split('.');
                            itemRaw.newKey = arr[arr.length - 1];
                            return itemRaw;
                        });

                        if($(`#response-raw-${key}-json-input`).length > 0){
                            new JsonEditor(`#response-raw-${key}-json`,
                                JSON5.parse($(`#response-raw-${key}-json-input`).val()),
                                {},
                                obj
                            ).load(JSON5.parse($(`#response-raw-${key}-json-input`).val()), obj);
                        }
                    });
                } catch (e) { }

                // 更新 url
                changeURLStatic('target_id', _target_id);

                // 优化 apipost-doc-paras 展示
                $('.apipost-doc-paras').each((i, item) => {
                    if ($(item).children().length == 0) {
                        let _id = $(item).attr('for-id');
                        let _title = $(`#${_id}`).attr('data-text');
                        let _tipDiv = `<div class="apipost-no-data">暂无${_title}数据</div>`;
                        $(item).append(_tipDiv)
                    }
                })
            }else {

                let newdata = Object.values(dataDB)
                // let LevelArr = []
                //
                // function levelTree(arr1, newarr) {
                //     arr1.forEach(item => {
                //         if (item.children && item.children.length > 0) {
                //             newarr.push(item)
                //             levelTree(item.children, newarr)
                //         } else {
                //             newarr.push(item)
                //         }
                //     })
                // }
                //
                // levelTree(newdata, LevelArr)

                newdata.forEach(item => {
                    if (item.local_target_id == _target_id) {

                        _targetData = formatJson(item);

                        $('.apipost-doc-body-nav-list').find('li').removeClass('active');
                        $('.apipost-doc-body-nav-list')
                            .find(`li[data-target_id="${_target_id}"]`)
                            .eq(0)
                            .addClass('active')
                            .toggleClass('toggle search-toggle');

                        const children_ids = getChildrenTargetIDs(Object.values(dataDB), _target_id);

                        if (_.isArray(children_ids)) {
                            if (
                                $('.apipost-doc-body-nav-list')
                                    .find(`li[data-target_id="${_target_id}"]`)
                                    .eq(0)
                                    .hasClass('toggle')
                            ) {
                                children_ids.forEach((target_id) => {
                                    if ($(`li[data-target_id="${target_id}"]`).attr('data-type') == 'folder') {
                                        $(`li[data-target_id="${target_id}"]`).addClass('is-hidden toggle');
                                    } else {
                                        $(`li[data-target_id="${target_id}"]`).addClass('is-hidden');
                                    }
                                });
                            } else {
                                children_ids.forEach((target_id) => {
                                    if ($(`li[data-target_id="${target_id}"]`).attr('data-type') == 'folder') {
                                        $(`li[data-target_id="${target_id}"]`).removeClass('is-hidden toggle');
                                    } else {
                                        $(`li[data-target_id="${target_id}"]`).removeClass('is-hidden');
                                    }
                                });
                            }
                        }

                        // 加载左侧内容
                        const _docContentHtml = template('apipost-doc-wrap-tpl', {
                            data: _targetData,
                            target_id: _target_id,
                        });

                        $('.apipost-doc-wrap').html(_docContentHtml);

                        // 右侧浮动导航
                        floatNavs = [];
                        $('.apipost-doc-wrap').find('h3 ,h4, h5, h6, h7').each((i, item) => {
                            let text = $(item).attr('data-text');
                            let id = $(item).attr('id');
                            if (text) {
                                floatNavs.push({
                                    text, id,
                                    name: $(item).prop("tagName"),
                                    indent: $(item).prop("tagName").replace(/[^0-9]/ig, "") - 2,
                                })
                            }
                        })

                        const _floatNavs = template('apipost-float-nav-template-tpl', {
                            list: floatNavs
                        });

                        $('.apipost-float-nav-template').html(_floatNavs);

                        // 请求body raw 参数
                        try {
                            if (_targetData.target_type == 'grpc' || _targetData.example_type == 'grpc') {
                                $('.request-body-raw-editor-json').each((i, item) => {
                                    let val = $(item).prev('input').val();

                                    if(val){
                                        new JsonEditor(
                                            `#${$(item).attr('id')}`,
                                            JSON5.parse(val),
                                            {},
                                            []
                                        ).load(JSON5.parse(val), []);
                                    }
                                })
                            }

                            if (_targetData.target_type == 'api' || _targetData.example_type == 'api') {
                                let obj = [];
                                if (_.has(_targetData, 'request.body.raw_para')) {
                                    obj = _targetData.request.body.raw_para.map((itemRaw) => {
                                        const arr = itemRaw.key.split('.');
                                        itemRaw.newKey = arr[arr.length - 1];
                                        return itemRaw;
                                    });
                                }

                                if($('#request-body-raw-editor-input').length > 0){
                                    new JsonEditor('#request-body-raw-editor-json',
                                        JSON5.parse($('#request-body-raw-editor-input').val()),
                                        {},
                                        obj
                                    ).load(JSON5.parse($('#request-body-raw-editor-input').val()), obj);
                                }
                            }
                        } catch (e) { }

                        // 响应示例 raw 参数
                        try {
                            _.forEach(_targetData.response, function (item, key) {
                                const obj = item.parameter.map((itemRaw) => {
                                    const arr = itemRaw.key.split('.');
                                    itemRaw.newKey = arr[arr.length - 1];
                                    return itemRaw;
                                });

                                if($(`#response-raw-${key}-json-input`).length > 0){
                                    new JsonEditor(`#response-raw-${key}-json`,
                                        JSON5.parse($(`#response-raw-${key}-json-input`).val()),
                                        {},
                                        obj
                                    ).load(JSON5.parse($(`#response-raw-${key}-json-input`).val()), obj);
                                }
                            });
                        } catch (e) { }
                        // 更新 url
                        changeURLStatic('target_id', _target_id);
                    }
                    // 优化 apipost-doc-paras 展示
                    $('.apipost-doc-paras').each((i, item) => {
                        if ($(item).children().length == 0) {
                            let _id = $(item).attr('for-id');
                            let _title = $(`#${_id}`).attr('data-text');
                            let _tipDiv = `<div class="apipost-no-data">暂无${_title}数据</div>`;
                            $(item).append(_tipDiv)
                        }
                    })
                })
            }

            // 折叠导航(移动端)
            $('.apipost-doc-body-nav,.apipost-doc-body-content').removeClass('open');

            $(document).on('scroll', function (e) {
                let currentNav= '';
                let scrollTop = $(document).scrollTop();

                floatNavs.forEach(item => {
                    if ($(`#${item.id}`).offset()) {
                        if ($(`#${item.id}`).offset().top > scrollTop && currentNav == '') {
                            currentNav = item.id
                            // console.log(currentNav)
                            $('.apipost-float-nav-template').find(`li[data-id="${currentNav}"]`).addClass('active').siblings().removeClass('active');
                        }
                    }
                })
                // console.log('请求参数:', $('#请求参数').offset().top, scrollTop)
            }).on('click', '.apipost-float-nav-template li', function(){
                $(this).addClass('active').siblings().removeClass('active');
            });

        }

        // 初始化左侧导航列表
        const _leftNavHtml = template('apipost-left-nav-template-tpl', {
            list: apipostData.children,
            target_id: _target_id,
        });

        $('.apipost-left-nav-template').html(_leftNavHtml);

        // 初始化项目公共信息
        $('title').text(`${apipostData.project_name} - Powered by Apipost V7`);
        $('.apipost-doc-body-nav-title').text(`${apipostData.project_name}`);

        // project-logo
        if (_.has(apipostData, 'project_logo') && apipostData.project_logo != '') {
            $('.project-logo').attr('src', apipostData.project_logo);
        }

        $('.project-logo').on('error', function () {
            $('.project-logo').attr('src', 'https://img.cdn.apipost.cn/docs/images7/logo.svg');
        });
        // consoleLog(apipostData)

        // 复制按钮
        const clipboard = new ClipboardJS('.copy-clipboard');
        clipboard.on('success', function (e) {
            $('.copy-clipboard-success').remove();
            $(e.trigger).append('<i class="copy-clipboard-success">复制成功</i>');
            e.clearSelection();
            $('.copy-clipboard-success').fadeOut(1000);
            setTimeout(function () {
                $('.copy-clipboard-success').remove();
            }, 1500);
        });

        clipboard.on('error', function (e) { });

        // 优化左侧菜单展示，默认收起
        // 获取当前的父ID
        let _target_parent_ids = getParentTargetIDs(Object.values(dataDB), _target_id);

        $('.apipost-left-nav-template').children('li').each((i, item) => {
            if ($(item).attr('data-type') == 'folder') {
                if (_target_parent_ids.indexOf($(item).attr('data-target_id')) == -1) {
                    $(item).addClass('toggle');
                } else {
                    $(item).removeClass('toggle');
                }
            }

            //if($(item).attr('data-type') != 'example') {
                if ($(item).attr('data-parent_id') != '0' && _target_parent_ids.indexOf($(item).attr('data-target_id')) == -1 && $(item).attr('data-target_id') != _target_id) {
                    $(item).addClass('is-hidden');
                } else {
                    $(item).removeClass('is-hidden');
                }
            //}
        })

        // 同级展示
        if (dataDB[_target_id]) {
            // $('.apipost-left-nav-template').children(`li[data-parent_id="${dataDB[_target_id].parent_id}"]`).removeClass('is-hidden');
            _target_parent_ids.forEach(_parent_id => {
                $('.apipost-left-nav-template').children(`li[data-parent_id="${_parent_id}"]`).removeClass('is-hidden');
            })
        }

        // alert(dataDB)
        // 加载单接口信息
        loadData(_target_id, dataDB);

        // 绑定事件
        $(document).on('click', '.mobile-nav-toggle-link-btn', function () { // 移动端导航
            $('.apipost-doc-body-nav,.apipost-doc-body-content').addClass('open');
        }).on('click', '.load-data-btn', function () { // 加载数据
            let target_id = $(this).attr('data-target_id');
            // let parent_id = $(this).attr('data-parent_id');
            // let target_type = $(this).attr('data-type');
            // let indent = $(this).attr('data-indent');

            // 加载单条数据
            loadData(target_id, dataDB);
        }).on('click', '.export-download-btn', function () { // 导出文档
            $(this).next('ul').toggleClass('is-hidden');
        })
    } else {
        // 空数据
        // consoleLog('null')
    }
</script>
<script>
    var _hmt = _hmt || [];
    (function () {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?a046ce178828e393614822a297b8d296";
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
    })();
</script>
</body>

</html>
